【发布时间】:2016-11-17 09:59:20
【问题描述】:
我想创建一个 d 列,其中包含来自其他列的所有非 NA 值。
我尝试了 ifelse,但无法弄清楚如何使其以正确的方式嵌套,以便将 c 列中的值也包含在内。 也许应该使用 ifelse 以外的其他东西?
这是一个“虚拟”数据框:
a <- c(NA, NA, NA, "A", "B", "A", NA, NA)
b <- c("D", "A", "C", NA, NA, NA, NA, NA)
c <- c(NA, NA, NA, NA, NA, NA, "C", NA)
data <- data.frame(a, b, c)
我希望 d 列看起来像这样:
data$d <- c("D", "A", "C", "A", "B", "A", "C", NA)
View(data)
【问题讨论】:
-
data[!is.na(data)] -
这会改变值的顺序。
-
您需要保留所有 NA 的行吗? (即数据框的最后一行)
-
是的。所有带有 NA 的行都应包含在 d 列中。并且值的顺序应该是完整的。
-
你也可以试试
data[cbind(1:nrow(data), max.col(!is.na(data)))]
标签: r if-statement dataframe conditional na