我试图在网站上搜索,但我找不到问题的答案;如果已有,请写下链接。
我从全国调查中得到两个数据框:每年我都有一些家庭已经接受过采访,而另一些家庭则是新的。我想合并数据帧,以便只有两个数据帧中存在的系列并匹配它们,以便将2014年的值连续存储,并为每个人提供下一个的2012年值(为了简洁起见我省略了调查中出现的其他社会变量。)
例如:df1和df2
> df1 <- data.frame(nquest=c(173, 526, 1066, 1066), nord=c(1,1,1,2), year=c(2014, 2014, 2014, 2014))
> structure(df1)
nquest nord year
1 173 1 2014
2 526 1 2014
3 1066 1 2014
4 1066 2 2014
> df2 <- data.frame(nquest=c(173, 526, 3456, 3456), nord=c(1,1,1,2), year=c(2012, 2012, 2012, 2012))
> structure(df2)
nquest nord year
1 173 1 2012
2 526 1 2012
3 3456 1 2012
4 3456 2 2012
其中nquest是家庭的编号,而nord是家庭的组成部分(例如,1位父亲,2位母亲)。
我想以这种方式合并它们:
> df <- data.frame(nquest=c(173, 173, 526,526), nord=c(1,1,1,1), year=c(2014, 2012, 2014, 2012))
> structure(df)
nquest nord year
1 173 1 2014
2 173 1 2012
3 526 1 2014
4 526 1 2012
我尝试合并它们:
tot <- merge (df1, df2, by=c("nquest", "nord")
structure(tot)
nquest nord year.x year.y
1 173 1 2014 2012
2 526 1 2014 2012
我尝试了rbind函数:
> tot <- rbind(s, df2)
> structure(tot)
nquest nord year
1 173 1 201
2 526 1 2014
3 1066 1 2014
4 1066 2 2014
5 173 1 2012
6 526 1 2012
7 3456 1 2012
8 3456 2 2012
谢谢
答案 0 :(得分:1)
这是一种使用“dplyr”的方法,虽然可能有更好的方法进行过滤
bind_rows(df1, df2) %>%
filter( nquest %in% df1$nquest & nquest %in% df2$nquest) %>%
arrange(nquest, desc(year))
指定年份的“安排”功能的第二个条件在这种情况下不是必需的,但是我把它放在那里以实现完整性