r - 如何在 R 中更新行值并避免重复
问题描述
我有以下两个数据框。第一个是包含大量观察的主要数据框,第二个包含一个国家的更新值。下面显示了两个示例数据框:
df1 <- data.frame(country = c("A","A","B","B") , value = 1:4, date = as.Date(c("01-01-2000","01-02-2000","01-01-2000","01-02-2000"),"%d-%m-%Y"))
df2 <- data.frame(country = c("A","A","A","A") , value = c(1,2,7,8), date = as.Date(c("01-01-2000","01-02-2000","01-03-2000","01-04-2000"),"%d-%m-%Y"))
现在,我想使用第二个数据框来更新 df1 中的值。结果应如下所示:
df1
country value date
1 A 1 2000-01-01
2 A 2 2000-02-01
3 A 7 2000-03-01
4 A 8 2000-04-01
5 B 3 2000-01-01
6 B 4 2000-02-01
我对 R 很陌生,所以我将不胜感激!这样做最有效的方法是什么?我已经尝试了一些方法,但无法找到一种快速而简洁的方法。非常感谢!
解决方案
我相信这就是您正在寻找的:
library(dplyr)
df1 %>%
full_join(df2) %>%
arrange(country)
# country value date
# 1 A 1 2000-01-01
# 2 A 2 2000-02-01
# 3 A 7 2000-03-01
# 4 A 8 2000-04-01
# 5 B 3 2000-01-01
# 6 B 4 2000-02-01
或者
merge(df1, df2, all.x = TRUE, all.y = TRUE)
推荐阅读
- visual-studio - TFS 测试文档:如何在测试用例中获取“自动化测试类型”
- node.js - 从 Node 上传多个文件到 SFTP
- c# - 在设置单值值之前,WPF 单值实例给出空异常
- ios - 从 HockeyApp 下载的 iPhone 应用程序无法正常工作
- java - 为什么我在比较我的优先级队列堆中的两个索引的行上得到空值?
- node.js - 如何在 JS 中存根嵌套的 promise
- solr - Solr 刻面结果未采用 csv 格式
- html - 使用node js node mailer通过邮件发送HTML模板
- qt - 未安装“QtQuick.LocalStorage”
- swift - JLStickerview 在 UIView 中使用 CGContext 设置背景透明渲染?