0

2 つの異なるデータ セットを使用しており、一方から他方にデータを移動したいと考えています。私はこのように考えています: 1 つは正しい係数 (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

もう 1 つは次のとおりです (最初のフレームからの集計平均)。

    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 のスコアを対象としています。FiveINFO のフレーム 2 で平均を取得し、最初のフレームで対応するチームに移動します。Five は 266 行、fiveINFO は 32 行です。fiveINFO には各 HTm が 1 回だけ含まれますが、5 には各 HTm が 8 ~ 10 回含まれます (各チームがプレーするホーム ゲームの数によって異なります)。似ているように見えるいくつかの回答を見つけましたが、データセットははるかに小さくなっています。2 つをマージしたくありません。2 番目のフレームの平均データを、最初のフレームの適切な HTm 値に分散させたいと考えています。

これにはある種の for ループを使用する必要があると想像していますが、私がやっていることはすべて打ちのめされています。ヘルプ?

4

1 に答える 1

1

total<-merge(five, fiveINFO, by="HTm")

ここで、total は、htm 列に基づいて、5 と fiveINFO からのマージされた列を持つデータ フレームです。Five と FiveINFO で一致しない htm の値は埋められません。ただし、NA で埋めたい場合は、明示的に行うことができます (マージ関数でこのオプションを使用します: all=TRUEall.x または all.y = TRUE)。

マージ後に不要な列を削除することもできます。

total=subset(total,select= -c(HPts,VPts)) #マージされたデータ フレームから列 HPts、VPts を削除するため

于 2012-05-11T02:36:26.667 に答える