我试图根据其他列的值的逻辑语句创建一个列ID
.例如,在下面的数据帧中
test <- structure(list(time = c(10L, 20L, NA, 30L), type = structure(c(1L,
2L, 3L, NA), .Label = c("A", "B", "C"), class = "factor"), ID = c(NA,
"1", NA, NA)), .Names = c("time", "type", "ID"), row.names = c(NA,
-4L), class = "data.frame")
看起来像
time type
1 10 A
2 20 B
3 NA C
4 30 NA
我想创建一个新的列ID
,它的值为1,表示所有time
不是NA
,所有type
不是A
.我正在为此使用以下代码:
test$ID <- ifelse(is.na(test$time) | test$type == "A", NA, "1")
结果如下:
time type ID
1 10 A NA
2 20 B 1
3 NA C NA
4 30 NA NA
但是,该代码忽略了第type
列中的NA
,导致第ID
列中的值为NA
.我需要这个值为1,所以我需要的解决方案应该是:
time type ID
1 10 A NA
2 20 B 1
3 NA C NA
4 30 NA 1
谁能告诉我怎么做?如果我能以某种方式将is.na(test$type)
的结果改为返回FALSE
,而不是TRUE
,我就可以在现有代码中使用它,但我不知道该怎么做.或者,也许我现有代码的 struct 需要完全改变?谢谢你的帮助!