如果其他列相等,则生成列

时间:2017-12-15 09:35:55

标签: r variables if-statement

我想要做的是在满足以下条件的数据框架中生成新列:

dataframe1$var1 == dataframe2$var1 &
dataframe1$var2 == dataframe2$var2 &
dataframe1var3 == dataframe3$var3*

基本上我需要生成一个虚拟变量,如果条件满足则值为1,如果不满足则值为0。

我尝试过以下不起作用的代码:

dataframe1$NewVar <- ifelse(dataframe1$var1 == dataframe2$var1 & 
dataframe1$var2 == dataframe2$var2 & dataframe1$var3 == dataframe2$var3 , 1, 0)

数据

dput(df1)
structure(list(var1 = c("A", "B", "C"), var2 = c("X", "X", "X"
), var3 = c(1, 2, 2)), .Names = c("var1", "var2", "var3"), row.names = c(NA, 
-3L), class = "data.frame")

dput(df2)
structure(list(var1 = c("A", "A", "C"), var2 = c("X", "X", "Y"
), var3 = c(1, 1, 1)), .Names = c("var1", "var2", "var3"), row.names = c(NA, 
-3L), class = "data.frame")

2 个答案:

答案 0 :(得分:0)

顺便说一句,我的数据集并不像我在图片中发布的示例那么简单。

我不知道它是否相关,但我的变量(列)中的值看起来像这样:

var1:24000000000 var2:1234567 var3:8

答案 1 :(得分:0)

你可以这样做,

as.integer(rowSums(df1 == df2) == ncol(df1))
#[1] 1 0 0