【发布时间】:2020-11-19 11:30:57
【问题描述】:
我目前正在使用 R 研究一个看起来有点像以下的数据集(除了它包含数百万行和更多变量):
pid agedays wtkg htcm bmi haz waz whz
1 2 1.92 44.2 9.74 -2.72 -3.23 NA
1 29 2.68 49.2 11.07 -2.21 -3.03 -2.00
1 61 3.63 52.0 13.42 -2.49 -2.62 -0.48
1 89 4.11 55.0 13.59 -2.20 -2.70 -1.14
2 1 2.40 48.1 10.37 -0.65 -1.88 -2.54
2 28 3.78 53.1 13.41 -0.14 -0.58 -0.79
2 56 4.53 55.2 14.87 -0.68 -0.74 -0.18
2 104 5.82 61.3 15.49 0.23 -0.38 -0.70
我正在创建一个函数,其中添加了以下变量: haz_1.5、waz_1.5、whz_1.5、htcm_1.5、wtkg_1.5 和 bmi_1.5
每个变量都将遵循以下相同的标准模式: !is.na(haz) and agedays > 61-45 and agedays
新的数据集应该如下所示(除了 bmi_1.5、wtkg_1.5 和 htcm_1.5 从下面的输出中省略,因此表格样本可以放入框内):
pid agedays wtkg htcm bmi haz waz whz haz_1.5 waz_1.5 whz_1.5
1 2 1.92 44.2 9.74 -2.72 -3.23 NA NA NA NA
1 29 2.68 49.2 11.07 -2.21 -3.03 -2.00 -2.21 -3.03 -2.00
1 61 3.63 52.0 13.42 -2.49 -2.62 -0.48 NA NA NA
1 89 4.11 55.0 13.59 -2.20 -2.70 -1.14 NA NA NA
2 1 2.40 48.1 10.37 -0.65 -1.88 -2.54 NA NA NA
2 28 3.78 53.1 13.41 -0.14 -0.58 -0.79 -0.14 -0.58 -0.79
2 56 4.53 55.2 14.87 -0.68 -0.74 -0.18 NA NA NA
2 104 5.82 61.3 15.49 0.23 -0.38 -0.70 NA NA NA
这是我迄今为止尝试过的代码:
measure<-list("haz", "waz", "whz", "htcm", "wtkg", "bmi")
set_1.5_months <- function(x, y, z){
maled_anthro[!is.na(z) & agedays > (x-45) & agedays <= (x-15), y:=z]
}
for(i in 1:length(measure)){
z <- measure[i]
y <- paste(measure[i], "1.5", sep="_")
x <- 61
maled_anthro_1<-set_1.5_months(x, y, z)
}
上面的代码没有成功。我只是在原始数据表中添加了一个新变量“y”,其中包含值“bmi”或“NA”。有人可以帮我找出这段代码哪里出错了吗?
我想保持函数类似于上面的格式(易于更改),因为我需要创建其他类似的函数,其中值“1.5”和 x==61 需要是换成其他数字,我喜欢这些在当前格式下相对容易更改。
【问题讨论】:
-
@Henrik 这没有回答我的问题。不过感谢您的发帖!
标签: r data.table