我尝试将两个二进制变量组合在一起作为一个变量,所以如果一个变量中有0,另一个变量中有1,那么它将是1。这包含NA。示例
a <- c("A", NA, 0)
b <- c("B",0, 1)
c <- c("C", 0, 0)
d <- c("D", 0, 1)
e <- c("E", NA, NA)
aa<- rbind(a,b,c,d,e)
aa <- as.data.frame(aa)
我想把这个代码给予我:
a <- c("A", NA, 0, 0)
b <- c("B",0, 1, 1)
c <- c("C", 0, 0, 0)
d <- c("D", 0, 1, 1)
e <- c("E", NA, NA, NA)
bb<- rbind(a,b,c,d, e)
bb <- as.data.frame(bb)
我觉得这很容易解决。
4条答案
按热度按时间ie3xauqp1#
使用
base R
,使用rowSums
通过将感兴趣的列与1进行比较来创建V4列,然后将“V4”中的值替换为NA,其中第2列和第3列中的一行中存在所有NAo0lyfsai2#
你可以像这样使用
rowSums
。请注意,我之前使用type.convert
是因为你的一些列是字符,而它们应该是数字:jchrr9hc3#
nwlqm0z14#
更新以推广
coalesce
的想法,我们可以编写一个自定义函数并应用它:输出:
**第一个答案:**我们可以使用
coalesce
作为提供的数据:请注意,如果您更改数据,此操作可能不起作用:规则是列的顺序:0必须在NA之前,1必须在0之前: