我有一个像这样的data.frame:
var1 <- c(1,1,0,0,0,0,0,0,0,0)
var2 <- c(0,0,0,0,0,0,0,0,0,1)
var3 <- c(0,0,0,0,0,1,0,0,0,0)
id <- c(1,2,3,4,5,6,7,8,9,10)
data <- data.frame(id, var1, var2, var3)
我希望有一个新变量,包括代码1,如果三列中的任何一列== 1;如果所有三行==零,则等于零。
新变种 1 1 0 0 0 1 0 0 0 1
答案 0 :(得分:1)
假设你只处理1和0。
new_var <- as.numeric(rowSums(data[,2:4])>0)
new_var
[1] 1 1 0 0 0 1 0 0 0 1
如果您的数字不是1,并且您想要特定检查1,则可以使用apply
new_var <- as.numeric(apply(data[,2:4]==1,1, any)
new_var
[1] 1 1 0 0 0 1 0 0 0 1
如果有一个非1的数字而其余的数字为0,则不会检查这种情况,但是你没有指明这种情况。
答案 1 :(得分:0)
在每一行中,我们将通过添加来检查var1,var2或var3是否大于0。
library(dplyr)
new_data <- data %>%
rowwise() %>%
mutate(new_var = ifelse(sum(var1, var2, var3) > 0, 1, 0))