Hi to all. I've been trying to calculate weight-for-age z-scores with the y2z command (AGD package).
However, I keep getting strange results. My hypothesis is that missings are the problem. My dataframe looks like this: data <- structure(list(sex = structure(c(3L, 3L, 3L, 2L, 3L), .Label = c("", "F", "M"), class = "factor"), weight = c(8.5, 8.2, 9, NA, 5.8), age = c(8, 9, 12, 9, 1)), .Names = c("sex", "weight", "age" ), class = "data.frame", row.names = c(NA, 5L)) Weight is in kg and age in months. I will use WHO curves for children younger than 2 years of age. z-score calculation: library(AGD) data$zeta <- y2z(y = data$weight, x = data$age/12, sex = data$sex, ref = get("who.wgt")) I get: Warning message: In `split<-.default`(`*tmp*`, f, drop = drop, value = value) : number of items to replace is not a multiple of replacement length data$zeta [1] NA NA NA -0.124 NA However a for loop seems to work. for (i in 1:5) { data$zeta[i] <- y2z(y = data$weight[i], x = data$age[i]/12, sex = data$sex[i], ref = get("who.wgt")) } data$zeta [1] -0.124 -0.751 -0.635 NA 2.002 Is there a workaround so that I don't have to use a for loop? na.action doesn't work either. Thanks. Martin ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.