我正在处理两个不同的数据集,并且我希望将数据从一个移动到另一个。我是这样想的:一个包含结果,与正确的因子(HTm)配对,我想把它们分散到另一个帧上。这是第一帧:
head(five)
Week Game.ID VTm VPts HTm HPts HDifferential VDifferential
1 1 NFL_20050908_OAK@NE OAK 20 NE 30 10 -10
2 1 NFL_20050911_ARI@NYG ARI 19 NYG 42 23 -23
3 1 NFL_20050911_CHI@WAS CHI 7 WAS 9 2 -2
4 1 NFL_20050911_CIN@CLE CIN 27 CLE 13 -14 14
5 1 NFL_20050911_DAL@SD DAL 28 SD 24 -4 4
6 1 NFL_20050911_DEN@MIA DEN 10 MIA 34 24 -24
VTm.f HTm.f average
1 OAK NE 19.4375
2 ARI NYG 19.4375
3 CHI WAS 19.4375
4 CIN CLE 19.4375
5 DAL SD 19.4375
6 DEN MIA 19.4375
> tail(five)
Week Game.ID VTm VPts HTm HPts HDifferential VDiff
262 19 NFL_20060114_WAS@SEA WAS 10 SEA 20 10 -10
263 19 NFL_20060115_CAR@CHI CAR 29 CHI 21 -8 8
264 19 NFL_20060115_PIT@IND PIT 21 IND 18 -3 3
265 20 NFL_20060122_CAR@SEA CAR 14 SEA 34 20 -20
266 20 NFL_20060122_PIT@DEN PIT 34 DEN 17 -17 17
267 21 NFL_20060205_SEA@PIT SEA 10 PIT 21 11 -11
VTm.f HTm.f average
262 WAS SEA 0
263 CAR CHI 0
264 PIT IND 0
265 CAR SEA 0
266 PIT DEN 0
267 SEA PIT 0
,这是另一个(聚合意味着来自第一帧)。
head(fiveINFO)
HTm HPts VPts average
1 ARI 19.87500 19.00000 19.43750
2 ATL 24.75000 19.12500 21.93750
3 BAL 19.37500 13.75000 16.56250
4 BUF 16.50000 17.37500 16.93750
5 CAR 25.12500 23.27273 24.19886
6 CHI 18.77778 14.00000 16.38889
tail(fiveINFO)
VTm HPts VPts average
27 SEA 21.00 25.000 23.0000
28 SF 30.75 12.625 21.6875
29 STL 28.00 22.000 25.0000
30 TB 15.75 15.375 15.5625
31 TEN 28.00 14.750 21.3750
32 WAS 20.60 18.800 19.7000
作为参考,这些数据是关注NFL分数。我想取第五帧中的平均值,第二帧,并将它们移动到第一帧中的相应团队。 5是266行,而fiveINFO是32行 - fiveINFO只包含每个HTm一次,而5个每个包含8-10次,具体取决于每个团队所玩的主游戏数量。我找到了几个似乎相似的答案,但数据集要小得多。我不想把两者合并;我希望来自第二帧的平均数据在第一帧中的适当HTm值上展开。
我想象我需要使用某种for循环,但我所做的一切都是惊人的。帮助
答案 0 :(得分:1)
total<-merge(five, fiveINFO, by="HTm")
其中total是具有基于htm列的5和5INFO的合并列的数据框。在5和5INFO中不匹配的htm值将不会被填充。但是,如果你想要用NA填充,你可以明确地这样做(在合并函数中使用此选项:all=TRUE
,all.x或all.y = TRUE)。
您还可以删除合并后不需要的额外列。
total=subset(total,select= -c(HPts,VPts))
#删除合并数据框中的HPts,VPts列