首页 > 解决方案 > 如何在 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 很陌生,所以我将不胜感激!这样做最有效的方法是什么?我已经尝试了一些方法,但无法找到一种快速而简洁的方法。非常感谢!

标签: rdataframeappend

解决方案


我相信这就是您正在寻找的:

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)

推荐阅读