这是我的问题。我想合并df1和df2数据集。
>df1
ID Sub Time Number Base Note
01 A01 100 20 20 Y
01 A01 110 35 20 NA
02 A02 100 15 15 Y
02 A02 150 35 15 NA
03 A04 120 10 10 Y
03 A04 130 25 10 NA
04 A05 90 19 19 Y
04 A05 130 50 19 NA
....
>df2
Sub Time Number
A01 150 55
A04 200 60
A05 200 80
A02 200 55
....
合并后的数据集应如下所示:
>merged
ID Sub Time Number Base Note
01 A01 100 20 20 Y
01 A01 110 35 20 NA
01 A01 150 55 20 NA
02 A02 100 15 15 Y
02 A02 150 35 15 NA
02 A02 200 55 15 NA
03 A04 120 10 10 Y
03 A04 130 25 10 NA
03 A04 200 60 10 NA
04 A05 90 19 19 Y
04 A05 130 50 19 NA
04 A05 200 80 19 NA
如果有人在R中有任何解决方案,请告诉我。谢谢!
答案 0 :(得分:2)
在向rbind
添加适当的列后,您可以df2
将两者放在一起。然后,在排序后,来自包na.locf
的{{1}}将进行最后一次观察。
我在此处通过向zoo
添加新级别来欺骗该列,以便代表该列中的原始df1$Note
值,因此NA
会将其转发。
结果中的na.locf
可以替换这些值,并且会减少额外的因子级别。
NA
答案 1 :(得分:2)
您可以使用库(plyr)中的命令rbind.fill:
require(plyr)
require(zoo)
merged = rbind.fill(df1, df2)
merged = merged[order(merged$Sub),]
merged$ID = na.locf(merged$ID)