从另一个数据框的两个条件填充一个数据框

时间:2019-11-25 22:33:00

标签: r dataframe conditional-statements

我有两个数据框:

第一个包含id,日期和值

df1=data.frame(id=c(1,2,3,3,4,4,5,5,5,5,5,6,6,6,6),
date=c(2010,2011,2010,2011,2009,2010,2010,2011,2012,2013,2014,2007,2008,2009,2010),
value=c(1,2,4,1000,150,35465,16545670,1,5,654684,254561,45812,9183,89714,88815))

   id date    value
1   1 2010        1
2   2 2011        2
3   3 2010        4
4   3 2011     1000
5   4 2009      150
6   4 2010    35465
7   5 2010 16545670
8   5 2011        1
9   5 2012        5
10  5 2013   654684
11  5 2014   254561
12  6 2007    45812
13  6 2008     9183
14  6 2009    89714
15  6 2010    88815 

第二个包含ID,日期

df2=data.frame(id=c(1,2,3,4,4,5,5,5,6,6,6),date=c(2009,2011,2011,2008,2009,2010,2011,2012,2007,2008,2010))

   id date
1   1 2009
2   2 2011
3   3 2011
4   4 2008
5   4 2009
6   5 2010
7   5 2011
8   5 2012
9   6 2007
10  6 2008
11  6 2010

我想用df1中date和id的匹配值填充df2

df3=data.frame(id=c(1,2,3,4,4,5,5,5,6,6,6),
date=c(2009,2011,2011,2008,2009,2010,2011,2012,2007,2008,2010),
New_col=c(NA,2,1000,NA,150,16545670,1,5,45812,9183,88815))

   id date  New_col
1   1 2009       NA
2   2 2011        2
3   3 2011     1000
4   4 2008       NA
5   4 2009      150
6   5 2010 16545670
7   5 2011        1
8   5 2012        5
9   6 2007    45812
10  6 2008     9183
11  6 2010    88815

我尝试了inner_join,left_join都不起作用,因为它们复制了我的行。 以下代码可以完成我的小样本工作,但不适用于我的大数据集:它将复制行。

df3<-inner_join(df2,df3,by=c("id","date")) 

我的问题类似于未解决的问题: R - Compare and test primary data frame on multiple conditions with secondary data frame and if true assign a given value from secondary data frame

0 个答案:

没有答案