【发布时间】:2022-06-11 09:06:26
【问题描述】:
我有如下数据子集。我想创建一个新列来说明如果 x1、x2 和 x3 列中的所有值都是 1,则“是”,如果是 2,则“否”。
structure(list(x1 = c("1", "1", "1", "2", NA, "2", "2", NA,NA, "1", "1", "1"),
x2 = c(NA, NA, "1", NA, "2", NA, "2", "2", "1", "1", "1", "1"),
x3 = c(NA, NA, "1", NA, "2", NA,"1", "1", "2", "1", "2", "1")),
class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -12L))
我在下面尝试过,但它不正确。感谢您的帮助。
d$new <- ifelse(!is.na(d$x1 ==1 & d$x2 ==1 d$x3 ==1 ), "yes","no")
【问题讨论】:
-
所以如果三个都是 1,那么你想要“是”,但两个都是 1,然后是“否”。但是如果只有一个是 1 呢? 2和NA有区别吗?此外,您似乎将实际的
NA值与具有"NA"值的字符串结合起来有点奇怪。你知道你的数据是怎么发生的吗?因为这可能是您首先要解决的问题。 -
@MrFlick 我修复了“NA”,但这只是我的大数据的一个例子。我想说的是,如果所有列(变量)都是 1,则说“是”,如果所有列(变量)都是 2,则说“否”并将 NAs 保持为 NAs
标签: r dataframe if-statement