【发布时间】:2015-09-23 06:30:26
【问题描述】:
我正在使用以下四列原始体重测量数据和一个非常接近功能的嵌套 ifelse 语句,该语句会生成“kg”向量。
Id G4_R_2_4 G4_R_2_5 G4_R_2_5_option2 kg
219 13237 16.0 NA NA 16.0
220 139129 8.50 55.70 47.20 8.50
221 139215 28.9 NA NA 28.9
222 139216 NA 46.70 8.50 46.70
223 139264 12.40 NA NA 12.40
224 139281 13.60 NA NA 13.60
225 139366 16.10 NA NA 16.10
226 139376 61.80 NA NA 61.80
227 140103 NA 48.60 9.10 48.60
目标是根据以下条件将三个“G4”列合并为 kg: 1) 如果 G4_R_2_4 不是 NA,打印它的值 2) 如果 G4_R_2_4 为 NA,则打印出现在 G4_R_2_5 和 G4_R_2_5_option2 中的较小值(对不起,蹩脚的变量名)
我一直在使用以下语句(名为“child”的大数据集):
> child$kg <- ifelse(child$G4_R_2_4 == 'NA' & child$G4_R_2_5 < child$G4_R_2_5_option2,
child$G4_R_2_5, ifelse(child$G4_R_2_4 == 'NA' & child$G4_R_2_5 > child$G4_R_2_5_option2,
child$G4_R_2_5_option2, child$G4_R_2_4))
这导致了我现在拥有的“kg”向量。它似乎满足 G4_R_2_4 条件(是/不是 NA),但对于 NA 情况,总是打印 G4_R_2_5 中的值。如何让它包含大于/小于条件?
【问题讨论】:
-
我添加了一些基准。请看一看。
标签: r if-statement dataframe na