我的数据框包含5个不同时间点的6390个人的BMI分数。从这个数据帧,有一些缺失的数据,我想只选择每个时间点BMI <18.5的那些,并将它们放在不同的向量中。
我可以使用
手动执行此操作ondergew1 <- bmir1[bmir1<18.5& !is.na(bmir1)]
ondergew2 <- bmir1[bmir2<18.5& !is.na(bmir2)]
ondergew3 <- bmir1[bmir3<18.5& !is.na(bmir3)]
ondergew4 <- bmir1[bmir4<18.5& !is.na(bmir4)]
ondergew5 <- bmir1[bmir5<18.5& !is.na(bmir5)]
但是,因为我将执行许多类似的操作,所以我希望自动化。我尝试使用:
for (i in 1:ncol(bmi)){
assign(paste0("ondergew",i),bmi[bmi<18.5& !is.na(bmi)])
}
但是这会将整个数据帧中的所有值<18.5返回到5个不同的向量。我尝试使用paste0函数为每个循环选择一个不同的时间点,如下所示:
for (i in 1:ncol(bmi)){
assign(paste0("ondergew",i),paste0("bmir",i)[paste0("bmir",i)<18.5& !is.na(paste0("bmir",i))])
}
这确实产生了5个不同的矢量,名称为ondergew1-ondergew5,但它们都是空的。有没有一种巧妙的方法来解决这个问题?我有一个bmi数据帧中的bmi数据,以及每个时间点单独的bmir1-bmir5向量。