首页 > 解决方案 > 在R中同时根据几列比较两个数据帧

问题描述

我有2个数据框:

df1
Syllable Duration
Bis      0.18
Zeks     0.34
Ben      0.11

df2
Syllable Duration Pitch
Bis      0.18     78
Zeks     0.34     67
Bs       0.19     34
Ben      0.11     69

我需要得到一个像这样的新数据框:

df3
Syllable Duration Pitch
Bis      0.18      78
Zeks     0.34      67
Ben      0.11      69

我尝试了很多东西,但没有什么能得到我想要的。任何帮助对我来说都是有价值的。

这是我尝试过的事情之一:

df1$Pitch <- df1$Pitch[match(df2$Syllable[df2$Duration],df1$Syllable[df1$Duration])]

标签: r

解决方案


评论是对的。但是,如果您的数据中有重复项,则可能会导致结果中的行数增加。使用它来消除重复项:

df3 <- merge(df2, df1[!duplicated(df1$Syllable),], by="Syllable")

推荐阅读