如何比较具有不同行数的不同数据帧中的两列,考虑另一个变量

时间:2017-03-05 12:03:08

标签: r

我试图分别比较来自不同csv文件的两列。

但我不知道如何做到这一点,因为这些数据帧有不同的行数。另外,我想比较那些匹配另一个变量。

例如,

>dat1
ID    X   Y    CODE 
1111  1   4    A
1111  2   3    A
1111  2   2    A
1112  2   2    A
1112  1   3    A
1112  2   5    A
1121  1   3    B
1121  2   1    B
1121  3   2    B

>dat2
ID    as   df    CODE 
1111   g    a    A
1112   d    d    A
1121   g    b    B

假设我有这两个数据集,我想将CODEdat1dat2进行比较,看它们是否与ID具有相同的值。

我的期望如下

>dat2
ID    as   df    CODE  Error
1111   g    a    A     0
1112   d    d    A     0
1121   g    b    B     0

如果发生任何不匹配,dat2$Error被编码1.这是我的期望,如果我知道哪个值不匹配会更好。

2 个答案:

答案 0 :(得分:0)

我认为这是你正在尝试做的事情:

library(dplyr)
dat1unique <- dat1 %>% select(ID, CODE) %>% distinct() %>% 
    rename(CODE1 = CODE)
dat2 <- dat2 %>% rename(CODE2 = CODE)
dat3 <- right_join(dat1unique, dat2, by = "ID") %>% 
    mutate(Error = ifelse(CODE1 == CODE2, 0, 1))

> dat3
    ID CODE1 as df CODE2 Error
1 1111     A  g  a     A     0
2 1112     A  d  d     A     0
3 1121     B  g  b     B     0

答案 1 :(得分:0)

if_else((!paste(dat2 $ ID,dat2 $ CODE)%in%paste(dat1 $ ID,dat1 $ CODE),0,1)