R-在两个数据框中匹配两列

时间:2020-05-24 20:11:10

标签: r

我正在尝试操纵满足某些条件的数据框。

有主要数据框df1:

Title             Artist        Warner    Sony    Universal
Break My Heart    Dua Lipa      0         0       0
Daisies           Katy Perry    0         0       1
Nicotine          Chef`Special  1         1       0
... 1 000 000+ rows

df2:

Label       Title            Artist        Operation
Warner      Nicotine         Chef`Special  0
Sony        Break my Heart   Dua Lipa      1
... 100+ rows

Df1包含一些错误。在这种情况下,尼古丁的Warner值为1,而应该为0。我想从两个数据框中匹配Title和Artist,然后根据df2将标签值更改为1或0。

在这种情况下,应该看到Chef'Special的尼古丁在df1和df2中,并且应将df1 $ Warner更改为0。使用同样的方法,Dua Lipa的Break My Heart应该将df1 $ Sony设置为1。

很长一段时间以来我一直在思考如何解决这个问题,但是我完全不知所措。

1 个答案:

答案 0 :(得分:2)

这里是使用合并的一个选项,没有您的数据,因此以mtcars为例:

df1 = head(mtcars, 5)
df2 = subset(head(within(df1,mpg <-  mpg * 2),2), select = "mpg")


df3 <- merge(df1, df2, by = 0, all.x = TRUE)
df3 <- within(df3, mpg <- ifelse(is.na(mpg.y), 
                              mpg.x, mpg.y))[-(2:3)]