R 如何更新和替换部分旧数据

R 如何更新和替换部分旧数据,r,R,我想合并df OldData和NewData。 在这种情况下,2015年11月和2015年12月出现在df中。 由于NewData是最准确的更新,我想使用df NewData中的值更新2015年11月和2015年12月的值,当然还要添加2016年1月和2016年2月的记录 有人能帮忙吗 OldData Month Value 1 Jan-2015 3 2 Feb-2015 76 3 Mar-2015 31 4 Apr-2015 45 5 May-2

我想合并df OldData和NewData。 在这种情况下,2015年11月和2015年12月出现在df中。 由于NewData是最准确的更新,我想使用df NewData中的值更新2015年11月和2015年12月的值,当然还要添加2016年1月和2016年2月的记录

有人能帮忙吗

OldData
      Month Value
1  Jan-2015     3
2  Feb-2015    76
3  Mar-2015    31
4  Apr-2015    45
5  May-2015    99
6  Jun-2015    95
7  Jul-2015    18
8  Aug-2015    97
9  Sep-2015    61
10 Oct-2015     7
11 Nov-2015    42
12 Dec-2015    32

NewData
      Month Value
1  Nov-2015    88
2  Dec-2015    45
3  Jan-2016    32
4  Feb-2016    11
这是我想要的输出:

JoinData
      Month Value
1  Jan-2015     3
2  Feb-2015    76
3  Mar-2015    31
4  Apr-2015    45
5  May-2015    99
6  Jun-2015    95
7  Jul-2015    18
8  Aug-2015    97
9  Sep-2015    61
10 Oct-2015     7
11 Nov-2015    88
12 Dec-2015    45
13 Jan-2016    32
14 Feb-2016    11
感谢@akrun,问题解决了,下面的代码运行顺利

rbindlist(列表(旧数据,新数据))[!重复(月,fromLast=TRUE)]

更新:现在,让我们升级一下我们的问题。 假设我们的OldData和NewData有另一个名为“Type”的列。 这次我们如何合并/更新它

>旧数据
月份类型值
1 2015-01 A 3
2 2015-02 A 76
3 2015-03 A 31
4 2015-04 A 45
5 2015-05 A 99
6 2015-06 A 95
7 2015-07 A 18
8 2015-08 A 97
9 2015-09 A 61
10 2015-10 A 7
11 2015-11 B 42
12 2015-12 C 32
13 2015-12 D 77

>新数据
月份类型值
1 2015-11 A 88
2 2015-12 C 45
3 2015-12 D 22
4 2016-01 A 32
5 2016-02 A 11

JoinData将假设更新NewData ass中的所有值,如下所示:

>连接数据
月份类型值
1 2015-01 A 3
2 2015-02 A 76
3 2015-03 A 31
4 2015-04 A 45
5 2015-05 A 99
6 2015-06 A 95
7 2015-07 A 18
8 2015-08 A 97
9 2015-09 A 61
10 2015-10 A 7
11 2015-11 B 42
12 2015-11 A 88(最初不包括,根据新数据添加)
12 2015-12 C 45(由NewData更新值)
13 2015-12第22天(由NewData更新值)
14 2016-01 A 32(新数据新增)
15 2016-02 A 11(新数据新增)

谢谢@akrun:我这里也有第二个问题的答案。 谢谢大家的帮助! 答案如下:


d1这里有一个使用
数据的选项。表
(类似于注释中提到的@thelatemail)


欢迎来到SO!最好让我们看看你做了什么。首先,查看
merge
函数。请您自己尝试使用此函数,并张贴您的地址。
rbind(NewData,OldData)
,然后使用
duplicated
扔掉旧记录。不过,让我有另一个列调用“Type”,我们可以使用吗!使用rbind和duplicated?atsang01复制它-您最好使用
?match
?merge
逻辑。谢谢@latemail。让我来做一点匹配和合并的工作,一旦我找到了多条件更新,我会在这里发布答案。@atsang01如果您在这方面需要帮助,请告诉我(在这种情况下,用新数据更新帖子会更好)@akrun U r super!!这太棒了…现在我可以通过节省大量时间来更新数据。再次感谢!
library(data.table)
rbindlist(list(OldData, NewData))[!duplicated(Month, fromLast=TRUE)]
rbindlist(list(OldData, NewData))[,if(.N >1) .SD[.N] else .SD, Month]