【发布时间】:2018-05-23 19:04:50
【问题描述】:
我有一个 R 数据框 df,如下所示:
ID End_week
2500076 1223
6801102 1325
6801282 1308
6803252 1426
9882106 1426
9894112 1217
我想插入一个新列 status,其值为 0/1 - 如果 End_week 等于 1426 则为 1,否则为 0。最终输出应如下所示:
ID End_week Status
2500076 1223 0
6801102 1325 0
6801282 1308 0
6803252 1426 1
9882106 1426 1
9894112 1217 0
我写了一个while循环,如下所示:
while(i<=length(df$End_week)) {
if(df$End_week[i]==1426) {
status[i] <- 1
} else {
status[i] <- 0
}
i=i+1
}
但是,我收到以下错误:
Error in if (df$End_week[i] == 1426) { :
argument is of length zero
我知道之前有人问过这个问题,所以我referredtheseanswers,但在我的场景中没有发现它们有帮助。我检查了End_week 列中的任何NA 值,但没有。有人可以建议出路吗?
【问题讨论】:
-
df$Status <- ifelse(End_week == 1426, 1, 0)或df$Status <- ifelse(End_week == '1426', 1, 0)取决于 df$Status 的类 -
或者只是将逻辑向量转换为
integer,即as.integer(End_week == 1426) -
@CPak - 太酷了。我不知道这个技巧。它对我有用!谢谢。
标签: r while-loop