我有两个data.frame
sdf
和wf
.
df
每个时间点都有一行id
。tpoint
每个 都缺少一些时间点 ( ) id
。
我的第二个data.frame
,分别对每个ie和wf
end 都有适当的开头和结尾。tpoint
id
spoint
epoint
所以我想df
为缺失的tpoints
. 以下是data.frames
df <- read.table(text= "id Gid tpoint dat1 dat2 dat3
1 a 1 x x 55
1 a 3 x x 44
1 a 4 x x 33
2 a 2 x x 66
2 a 3 x x 43
3 b 4 x x 42
3 b 5 x x 36
4 b 4 x x 33
4 b 5 x x 65
4 b 6 x x 77
5 b 4 x x 72
5 b 5 x x 25
5 b 6 x x 12
5 b 7 x x 09",header=TRUE)
wf <- read.table(text= "id Gid spoint epoint
1 a 1 5
2 a 1 4
3 b 4 6
4 b 4 7
5 b 4 7",header=TRUE)
我想出了一种方法来做到这一点:
library(plyr)
seqlist <- apply(wf, 1, function(x) data.frame( id=x[1],
Gid=x[2],
tpoint = seq(x[3], x[4])))
# bunch of warnings but I get the result
seqdf <- ldply(seqlist, data.frame)
finaldf <- merge(seqdf, df, by=c("Gid", "id", "tpoint"), all=TRUE)
尽管我到达了我想去的地方,但我收到了一堆丑陋的警告。但我想所有的警告都应该被压制。有无数种方法可以给猫剥皮R
。有没有更好的方法来做到这一点我错过了?