2016-10-12 8 views
2

スポーツマッチの結果に関するデータを含む大きなデータフレームがあります。私は、特定の基準に応じてデータフレームから特定のデータを抽出して抽出したいと考えています。で、例えば、そうデータフレームから名前のベクトルを構築するR

Winner_Teams Win_Capt_Nm Win_Country Loser_teams Lose_Capt_Nm Lose_Country 
1  Man utd  John  England Barcalona  Carlos  Spain 
2 Liverpool  Steve  England Juventus  Mario  Italy 
3  Man utd  John Scotland R Madrid   Juan  Spain 
4  Paris SG  Teirey  France  Chelsea   Mark  England 

:ここに 私はそうのように、各行のトーナメントの具体的なサッカーの試合についてのデータを表示するデータフレームDFを、持っている想像し...私が何を意味するかの簡単な例です行[1]男はBarcalonaに対して優勝した、男Utdのキャプテンの名前はJohnであり、彼はイギリス出身です。 Barcalona(試合の敗者)キャプテンの名前はCarlosで、彼はスペイン出身です。私は、出力は次のようになりますトーナメント、内のすべての英語の選手の名前とベクターを構築したい

[1] "John" "Mark" "Steve" 

はここに...私がこれまで試した何 私です

:最初のステップは、その後、私は名前だけを隔離するEngland_player上)(選択を使用し、英語キャプテン

> England_player <- data.frame(filter(df, Win_Country=="England")) 
> England_player 

Winner_Teams Win_Capt_Nm Win_Country Loser_teams Lose_Capt_Nm Lose_Country 
1  Man utd  John  England Barcalona  Carlos  Spain 
2 Liverpool  Steve  England Juventus  Mario  Italy 
3  Paris SG  Teirey  France  Chelsea   MArk  England 

を持っていないすべての一致を破棄し、データフレームを作成することでした

> England_player_names <- select(England_player, Win_Capt_Nm, Lose_Capt_Nm) 
> England_player_names 

    Win_Capt_Nm Lose_Capt_Nm 
1  John  Carlos 
2  Steve  Mario 
3  Teirey   Mark 

それから私は立ち往生します!あなたが見ることができるように、出力は英語の勝者の名前と相手の名前を表示します...これは私が望むものではありません! このデータフレームから名前を読み取るのは簡単です。しかし、私が扱っているデータフレームは大きく、値を読み取るだけでいいわけではありません! 私はこれをどうやってやろうとしていますか?

+1

あなたは2つのサブセット組み合わせる必要があるように思える - 'Lose_Country'がイングランドのとき' Win_Country'はイングランドで、かつ 'Lose_Cpt_Nm'とき' Win_Capt_Nm'を。それぞれのベクトルを別々に引っ張り、 'c()'を使って組み合わせます。 – Gregor

+1

そうでなければ良い質問ですが、Rタグを使うときは 'dput()'でデータを共有してください。より多くの情報のためにあなたのポインタを 'r'タグの上に置いてください。 –

+0

私はあなたが2つのサブセットを作る必要があると思います:最初にあなたはwin country = englandにサブセットし、選手の名前を取得します。それから、あなたはcountry = Englandを失い、同じことをする。最後に、rbindによって2つのリストをまとめます。しかしこれは重複につながりますが、これは 'uniq'で取り除くことができます – lbusett

答えて

5
english.players <- union(data$Win_Capt_Nm[data$Win_Country == 'England'], data$Lose_Capt_Nm[data$Lose_Country == 'England']) 

[1] "John" "Steve" "Mark" 
+0

または上記のように1行ですべてを行います... – lbusett

+0

これは完璧です!私はちょうどunion()コマンドを発見したばかりで、すでにそれを愛しています!ありがとう! – Electrino

+0

'union 'を使用すると重複した名前が削除されることに注意してください。重複を保持するには、 'union()'の代わりに 'c()'を実行します。 – jdobres

関連する問題