【问题标题】:Compare values across 2 columns using DPLYR使用 DPLYR 比较 2 列的值
【发布时间】:2019-03-06 07:50:46
【问题描述】:

我正在尝试使用dplyrmutate 比较两列之间的每一行。

数据框

df <- data.frame(ID = c("1234", "1234", "7491", "7319", "321", "321"), 
add = c("1234", "1234", "749s1", "73a19", "321", "321"))

变异,如果列 ID = 列添加,则返回 1 否则 0

df %>% mutate(TEST = ifelse(df$ID == df$add, 1, 0))

但是,上面的代码似乎不起作用。

更新:由于因素水平导致的错误

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    您没有分享错误,我认为这是因为factor 级别。这是更新的解决方案。

    
    
    library(dplyr)
    #> 
    #> Attaching package: 'dplyr'
    #> The following objects are masked from 'package:stats':
    #> 
    #>     filter, lag
    #> The following objects are masked from 'package:base':
    #> 
    #>     intersect, setdiff, setequal, union
    
    df <- data.frame(ID = c("1234", "1234", "7491", "7319", "321", "321"), 
                     add = c("1234", "1234", "749s1", "73a19", "321", "321"))
    
    
    
    df %>% mutate(TEST = ifelse(as.character(ID) == as.character(add),1,0))
    #>     ID   add TEST
    #> 1 1234  1234    1
    #> 2 1234  1234    1
    #> 3 7491 749s1    0
    #> 4 7319 73a19    0
    #> 5  321   321    1
    #> 6  321   321    1
    

    reprex package (v0.2.1) 于 2019 年 3 月 6 日创建

    您可以使用as.numeric 进一步简化它:

    library(dplyr)
    #> 
    #> Attaching package: 'dplyr'
    #> The following objects are masked from 'package:stats':
    #> 
    #>     filter, lag
    #> The following objects are masked from 'package:base':
    #> 
    #>     intersect, setdiff, setequal, union
    
    df <- data.frame(ID = c("1234", "1234", "7491", "7319", "321", "321"), 
                     add = c("1234", "1234", "749s1", "73a19", "321", "321"),
                     stringsAsFactors = FALSE)
    
    
    
    df %>% mutate(TEST = as.numeric(ID == add))
    #>     ID   add TEST
    #> 1 1234  1234    1
    #> 2 1234  1234    1
    #> 3 7491 749s1    0
    #> 4 7319 73a19    0
    #> 5  321   321    1
    #> 6  321   321    1
    

    reprex package (v0.2.1) 于 2019 年 3 月 6 日创建

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 2019-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多