将结果从一个数据帧移动到数据集

时间:2012-05-11 01:41:00

标签: r

我正在处理两个不同的数据集,并且我希望将数据从一个移动到另一个。我是这样想的:一个包含结果,与正确的因子(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循环,但我所做的一切都是惊人的。帮助

1 个答案:

答案 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列