r - 在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])]
解决方案
评论是对的。但是,如果您的数据中有重复项,则可能会导致结果中的行数增加。使用它来消除重复项:
df3 <- merge(df2, df1[!duplicated(df1$Syllable),], by="Syllable")
推荐阅读
- javascript - 为什么循环属性不适用于我的第二个动画?
- git - 重命名一个 git 本地和远程分支后,这个仓库的其他用户应该怎么做?
- javascript - 承诺 {
使用 REST API 检索值时出错 - angular - 生成用于导出的角度包列表
- ios - 当我使用 ARWorldTrackingConfiguration 时,RealityKit 模型实体会更暗
- javascript - 为什么我需要添加 .isToggleOn?
- ruby - XML 元素中的连字符 (-) 在 Ruby 中将其转换为 JSON 时变为下划线 (_)
- c++ - 如何使用 unique_ptr 创建 blob 流?
- r - R Parallel Package:clusterExport 到每个单独的核心,而不是一个大对象到所有核心
- python - 在 Pandas 中,我如何将选择日期列转换为行