我有两个数据框:
df1
Syllable Duration Pitch
@ 0.08 93
@ 0.05 107
@ 0.13 56
@ 0.07 95
@ 0.07 123
df2
Syllable Duration
@ 0.08
@ 0.05
@ 0.07
@ 0.07
我想将它们合并到另一个数据框中:
df3
Syllable Duration Pitch
@ 0.08 93
@ 0.05 107
@ 0.07 95
@ 0.07 123
问题是我重复了Syllable和Duration值。我已经试过了这段代码,但是它给了我不正确的Pitch:
df3 <- merge(df2, df1[!duplicated(df1$Syllable),], by="Syllable")
df3
Syllable Duration Pitch
@ 0.08 93
@ 0.05 93
@ 0.07 93
@ 0.07 93
最佳答案
我建议使用dplyr软件包。如果使用它,则可以选择要作为连接依据的列。加入时,应使用semi_join
而不是inner_join
。区别在于inner_join
保留所有组合,并可能重复行(“如果x和y之间存在多个匹配项,则返回所有匹配项组合。”)
另一方面,semi_join
做到了:“半联接不同于内部联接,因为内部联接将为y的每个匹配行返回x的一行,其中半联接将永远不会重复x的行。”
对于您的情况,可以使用semi_join(df1, df2, by = c("Syllable", "Duration"))
合并数据帧。 by
vector 定义您要加入的列名。
这给您您想要的:
Syllable Duration Pitch
1 @ 0.08 93
2 @ 0.05 107
3 @ 0.07 95
4 @ 0.07 123
关于r - 在R中合并具有特定条件的两个数据帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50698889/