通过匹配两行合并不相等的数据帧用0替换R中缺少的值
我想通过匹配两列合并两个不相等的数据帧并用0替换缺少的值来创建一个新的数据帧。 以下是我拥有的两个数据帧示例:通过匹配两行合并不相等的数据帧用0替换R中缺少的值,r,dataframe,merge,R,Dataframe,Merge,我想通过匹配两列合并两个不相等的数据帧并用0替换缺少的值来创建一个新的数据帧。 以下是我拥有的两个数据帧示例: df1 ID YEAR INTERVIEW ID_HOUSEHOLD 1 2017 300 1 2018 300 1 2019 300 2 2017 150 2 2018 150 2 2019 150 3 2017
df1
ID YEAR INTERVIEW ID_HOUSEHOLD
1 2017 300
1 2018 300
1 2019 300
2 2017 150
2 2018 150
2 2019 150
3 2017 420
3 2018 420
df2
ID YEAR INTERVIEW YEARS_EDU
1 2017 10
1 2018 10
1 2019 10
3 2017 3
3 2018 3
*请注意,在第二个数据帧中,我没有个人2的信息
我希望获得以下数据帧:
df3
df1
ID YEAR INTERVIEW ID_HOUSEHOLD YEARS_EDU
1 2017 300 10
1 2018 300 10
1 2019 300 10
2 2017 150 0
2 2018 150 0
2 2019 150 0
3 2017 420 3
3 2018 420 3
我正在努力:
df3<-merge(df1,df2, by="ID", all=TRUE)
df3<-merge(df1,df2, by="ID","YEAR_INTERVIEW", all=TRUE)
df3by
的需要是一个向量
,即我们可以用c()创建一个向量。另外,all=TRUE
是一个完全联接,但在这里,它应该是一个左联接,因此它是all.x=TRUE
。如果没有匹配项,则默认情况下元素将为NA
out <- merge(df1,df2, by=c("ID","YEAR_INTERVIEW"), all.x=TRUE)
-输出
out
# ID YEAR_INTERVIEW ID_HOUSEHOLD YEARS_EDU
#1 1 2017 300 10
#2 1 2018 300 10
#3 1 2019 300 10
#4 2 2017 150 0
#5 2 2018 150 0
#6 2 2019 150 0
#7 3 2017 420 3
#8 3 2018 420 3
数据
df1
out
# ID YEAR_INTERVIEW ID_HOUSEHOLD YEARS_EDU
#1 1 2017 300 10
#2 1 2018 300 10
#3 1 2019 300 10
#4 2 2017 150 0
#5 2 2018 150 0
#6 2 2019 150 0
#7 3 2017 420 3
#8 3 2018 420 3
df1 <- structure(list(ID = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L),
YEAR_INTERVIEW = c(2017L,
2018L, 2019L, 2017L, 2018L, 2019L, 2017L, 2018L), ID_HOUSEHOLD = c(300L,
300L, 300L, 150L, 150L, 150L, 420L, 420L)), class = "data.frame",
row.names = c(NA,
-8L))
df2 <- structure(list(ID = c(1L, 1L, 1L, 3L, 3L),
YEAR_INTERVIEW = c(2017L,
2018L, 2019L, 2017L, 2018L), YEARS_EDU = c(10L, 10L, 10L, 3L,
3L)), class = "data.frame", row.names = c(NA, -5L))