2012-05-11 12 views
0

私は2つの異なるデータセットを扱っています。データを一方から他方に移動したいと思います。私はそれをこのように考えています:1つは結果を含み、正しい因子(HTm)と対になり、別のフレームにそれらを広げたいと思います。最初のフレームは次のとおりです。1つのデータフレームからデータセットへの結果の移動

head(five) 
    Week  Game.ID  VTm VPts HTm HPts HDifferential VDifferential 
    1 1 [email protected] OAK 20 NE 30  10   -10 
    2 1 [email protected] ARI 19 NYG 42   23   -23 
    3 1 [email protected] CHI 7 WAS 9    2   -2 
    4 1 [email protected] CIN 27 CLE 13   -14   14 
    5 1 [email protected] DAL 28 SD 24   -4    4 
    6 1 [email protected] 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 [email protected] WAS 10 SEA 20   10 -10 
    263 19 NFL_20060115_[email protected] CAR 29 CHI 21   -8  8 
    264 19 [email protected] PIT 21 IND 18   -3  3 
    265 20 [email protected] CAR 14 SEA 34   20 -20 
    266 20 [email protected] PIT 34 DEN 17   -17  17 
    267 21 [email protected] 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のスコアを参照しています。私は5INFOのフレーム2の平均を取って、最初のフレームで対応するチームに移動したいと思います。 5つのINFOは32行ですが、5つのINFOにはそれぞれHTMが1つしか含まれていませんが、5つにはそれぞれのチームがプレーするホームゲームの数に応じて8~10の倍数が含まれています。私は類似しているように思われるいくつかの答えを見つけましたが、はるかに小さいデータセットを使用しました。私は2つをマージしたくない。私は、第2のフレームからの平均データを第1のフレームの適切なHTm値に分散させたい。

私はこのためにいくつかのforループを使用する必要があると思っていますが、私がやっていることはすべて目立ちます。助けて?合計がHTM列に基づいて5及びfiveINFOからマージされた列を有するデータフレームである

+1

から列HPTS、VPTSの除去#for私が理解するのに苦労していますなぜ 'マージ()'正確にあなたがやりたいことはありません。あなたが望んでいると思われるものは、その機能が行うこととまったく同じです。 – joran

+0

だから、このようなものはあなたが望むものではありませんか?あなたのデータを再作成しました:5つの thelatemail

+0

私はマージを使ってデータを正しいHTmのために広げようとしました。 「ARI」としてARIの平均を19.4375とした。振り返ってみると、私はたぶんコードを間違って書きました。最後に –

答えて

1

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

。 5と5のINFOで一致しないhtmの値は満たされません。しかし、NAでいっぱいにしたい場合は、明示的に行うことができます(このオプションをマージ関数で使用:all=TRUE、all.xまたはall.y = TRUE)。

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

total=subset(total,select= -c(HPts,VPts))マージされたデータフレーム

+0

助けてくれてありがとう!簡単な質問:そのコードを試したときに、次のエラーが発生しました。 fix.by(by.y、y)のエラー: 'by'は有効な列を指定する必要があります どのように修正できましたか?それらは間違いなく有効な列です... –

+0

5と5INFOの両方のデータフレームで列名が "HTm"であることを確認してください。 Rは大文字小文字を区別しますまたは両方のデータセットに共通の列名がない場合は、(...、by.x = "データフレーム5の列名"、を使用します。y = "data-frame fiveINFOの列名") – Subs

+0

5INFOの2番目のデータフレームに「HTm」と「VTm」の2つの別々の列がありますか?頭と尾の情報が2番目のデータフレームの列名と一致しません。マージ中に正しい列名を使用するようにしてください。 (両方のデータフレームに同じ列名が含まれている場合は 'by'を使用し、そうでない場合は' by.x'と 'by.y'をマージに使用します) – Subs

関連する問題