【问题标题】:Generate column based if other columns are equal如果其他列相等,则基于列生成
【发布时间】:2018-05-29 11:48:06
【问题描述】:

我想做的是在满足这些条件的数据框中生成一个新列:

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")

【问题讨论】:

标签: r variables if-statement


【解决方案1】:

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

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

var1: 24000000000 变量 2:1234567 var3: 8

【讨论】:

  • 请编辑您的问题以添加任何其他信息。除非您要真正回答问题,否则不要使用“答案”部分
【解决方案2】:

你可以这样做,

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    相关资源
    最近更新 更多