Rデータフレーム-ある列の共通値を使用して別の列の値を検索する

チャノヴィツェ

申し訳ありませんが、タイトルのより良い名前を思い付くことができませんでした。私は目前の問題を言葉で説明するのに非常に苦労しているので、代わりにデータフレームで例を示しましょう。

dput(DF)

structure(list(game_id = c(162044, 162044, 162044, 162044, 162044, 
162044, 162044, 162044, 162044, 162044, 162044, 162044, 162044, 
162044, 162044, 166807, 166807, 166807, 166807, 166807, 166807, 
166807, 166807, 166807, 166807, 166807, 166807, 166807, 166807, 
166807, 166807, 166807, 166807, 166807, 167948, 167948, 167948, 
167948, 167948, 167948, 167948, 167948, 167948, 167948, 167948, 
167948, 167948, 167948, 167948, 167948), team_id = c(108738, 
108738, 108738, 108738, 108738, 108738, 108738, 126351, 126351, 
126351, 126351, 126351, 126351, 126351, 126351, 54161, 54161, 
54161, 54161, 54161, 54161, 54161, 54161, 133418, 133418, 133418, 
133418, 133418, 133418, 133418, 133418, 133418, 54161, 54161, 
54161, 54161, 54161, 54161, 54161, 54161, 54161, 135796, 135796, 
135796, 135796, 135796, 135796, 135796, 135796, 135796)), .Names = c("game_id", 
"team_id"), row.names = c(NA, 50L), class = "data.frame")  


head(DF)

   game_id team_id
1   162044  108738
2   162044  108738
3   162044  108738
4   162044  108738
5   162044  108738
6   162044  108738
7   162044  108738
8   162044  126351
9   162044  126351
10  162044  126351
11  162044  126351
12  162044  126351
13  162044  126351
14  162044  126351
15  162044  126351
16  166807   54161
17  166807   54161
18  166807   54161
19  166807   54161
20  166807   54161
21  166807   54161
22  166807   54161
23  166807   54161
24  166807  133418
25  166807  133418
26  166807  133418
27  166807  133418
28  166807  133418
29  166807  133418
30  166807  133418
31  166807  133418
32  166807  133418
33  166807   54161
34  166807   54161
35  167948   54161
36  167948   54161
37  167948   54161
38  167948   54161
39  167948   54161
40  167948   54161
41  167948   54161
42  167948  135796
43  167948  135796
44  167948  135796
45  167948  135796
46  167948  135796
47  167948  135796
48  167948  135796
49  167948  135796
50  167948  135796

これは私が使用しているデータフレームです。重要なのは、game_idごとに2つのteam_idがあるという事実です。問題が解決する場合は、game_idsがすべて並べ替えられ、team_idsがグループ化されて、game_idごとに、最初のteam_idのすべてのインスタンスが表示され、次に2番目のteam_idのすべてのインスタンスが表示されます(現在はそうではありません。 33行目と34行目で確認できます)。team2_idという3番目の列を作成する必要があります。この列には、game_idに対応する他のteam_idがあります。必要な出力の例を以下に示します。

head(DF)

   game_id team_id team2_id
1   162044  108738   126351
2   162044  108738   126351
3   162044  108738   126351
4   162044  108738   126351
5   162044  108738   126351
6   162044  108738   126351
7   162044  108738   126351
8   162044  126351   108738   
9   162044  126351   108738
10  162044  126351   108738
11  162044  126351   108738
12  162044  126351   108738
13  162044  126351   108738
14  162044  126351   108738
15  162044  126351   108738
16  166807   54161   133418 
17  166807   54161   133418
18  166807   54161   133418
19  166807   54161   133418
20  166807   54161   133418
21  166807   54161   133418
22  166807   54161   133418
23  166807   54161   133418
24  166807  133418    54161   
25  166807  133418    54161
26  166807  133418    54161
27  166807  133418    54161
28  166807  133418    54161
29  166807  133418    54161
30  166807  133418    54161
31  166807  133418    54161
32  166807  133418    54161
33  166807   54161   133418
34  166807   54161   133418
35  167948   54161   135796
36  167948   54161   135796
37  167948   54161   135796
38  167948   54161   135796
39  167948   54161   135796
40  167948   54161   135796
41  167948   54161   135796
42  167948  135796    54161  
43  167948  135796    54161
44  167948  135796    54161
45  167948  135796    54161
46  167948  135796    54161
47  167948  135796    54161
48  167948  135796    54161
49  167948  135796    54161
50  167948  135796    54161

一見、このようなデータ操作に苦労するとは思いませんでしたが、残念ながらかなり難しいと感じています。どんな助けでもいただければ幸いです!

ありがとう、

AlexR

tidyrを使用た解決策は次のとおりdplyrです。

library(dplyr)
library(tidyr)
teams <- DF %>%
  group_by(game_id, team_id) %>% # For every game_id and team_id
  summarise() %>% # Create one row
  # Grouping is now for every game_id
  mutate(team_number = paste0("team", row_number(), "_id")) %>% # generate the to-be column name of this team_id
  spread(team_number, team_id) # Spread the column names to create the new columns
# Now join the team data to the original DF:
res <- DF %>%
  left_join(teams, by = "game_id")

res今と同じ列を持つことになりますDFと2つの以上の列を、team1_idそしてteam2_id含むteam_id最初のRESPのを。データに表示されているゲームの2番目のチーム。また、実際のプレーヤーが所属していたチームのteam_idいずれかに等しいか、team1_idそれにteam2_id応じて、列が表示されます。

楽しい事実:場合game_idがある二つ以上team_idのコードが正常に新しい列を作成しますteam3_idteam4_idなど、必要に応じて。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

あるデータフレームから別のデータフレームの値を検索し、対応する行/別の列に情報を返す

分類Dev

rを使用してデータフレームの上位値を検索する

分類Dev

列データフレームの値を使用して列インデックスを検索する

分類Dev

あるデータフレームを使用して別のデータフレームの値とインデックスを検索する方法

分類Dev

行番号のリストを使用してデータフレーム列の値を検索する方法

分類Dev

group_byと列条件を使用してデータフレーム内の値を検索する

分類Dev

列のデータフレームで同一の観測値を検索しますが、別の列では異なる観測値を検索します

分類Dev

別の列の値を修正するときに、データフレーム内の列の可能なすべての組み合わせを検索します

分類Dev

列の値を使用して、別のデータフレームで分析する列を識別する方法は?

分類Dev

別の列に特定の値があることを条件として、データフレームの列でRのdiff関数を使用する方法

分類Dev

Rを使用して2つのデータフレームの共通列の値を照合し、対応するデータに書き込みます

分類Dev

Rの別のデータフレームの対応する値を使用して、データフレームの各列を分割できますか?

分類Dev

他の行の値を検索して、新しいpandasデータフレーム列を作成する

分類Dev

R-別のデータフレームの一致する値を使用して、データフレームに新しい列を追加します

分類Dev

データフレームの列で文字列値を検索する

分類Dev

Rの別のデータフレームの値を使用してデータフレームに列を作成する

分類Dev

別のdfの1つのデータフレームから文字列を検索し、関連する値を返す簡単な方法はありますか?

分類Dev

Rの別のデータフレームの値を使用して列を埋める方法

分類Dev

あるデータフレームから別のデータフレームで欠落している値を検索する正しい方法

分類Dev

r の ID に従って、ある列から別の列の値を検索します。

分類Dev

別のデータフレームの列で変数値のリストを検索する

分類Dev

共通の列の値が2つ以上あるデータベース内の行を検索する

分類Dev

文字列を使用して一意の行を検索し、データフレーム列の対応する値を合計します

分類Dev

あるデータフレームの列全体を別のデータフレームの列の最小値として設定します

分類Dev

特定のパンダのデータフレーム列で値を検索し、その行の他の値を個別の変数に格納する方法

分類Dev

別のデータフレームを使用して、あるデータフレームの複数の列の値を条件付きで置き換える

分類Dev

R別の値に基づいて2番目のデータフレームを検索する

分類Dev

あるデータフレームの列ヘッダーと値を使用して、別のデータフレームの重みを見つける

分類Dev

別のデータフレームの値を使用して、行列内のセル値を検索します

Related 関連記事

  1. 1

    あるデータフレームから別のデータフレームの値を検索し、対応する行/別の列に情報を返す

  2. 2

    rを使用してデータフレームの上位値を検索する

  3. 3

    列データフレームの値を使用して列インデックスを検索する

  4. 4

    あるデータフレームを使用して別のデータフレームの値とインデックスを検索する方法

  5. 5

    行番号のリストを使用してデータフレーム列の値を検索する方法

  6. 6

    group_byと列条件を使用してデータフレーム内の値を検索する

  7. 7

    列のデータフレームで同一の観測値を検索しますが、別の列では異なる観測値を検索します

  8. 8

    別の列の値を修正するときに、データフレーム内の列の可能なすべての組み合わせを検索します

  9. 9

    列の値を使用して、別のデータフレームで分析する列を識別する方法は?

  10. 10

    別の列に特定の値があることを条件として、データフレームの列でRのdiff関数を使用する方法

  11. 11

    Rを使用して2つのデータフレームの共通列の値を照合し、対応するデータに書き込みます

  12. 12

    Rの別のデータフレームの対応する値を使用して、データフレームの各列を分割できますか?

  13. 13

    他の行の値を検索して、新しいpandasデータフレーム列を作成する

  14. 14

    R-別のデータフレームの一致する値を使用して、データフレームに新しい列を追加します

  15. 15

    データフレームの列で文字列値を検索する

  16. 16

    Rの別のデータフレームの値を使用してデータフレームに列を作成する

  17. 17

    別のdfの1つのデータフレームから文字列を検索し、関連する値を返す簡単な方法はありますか?

  18. 18

    Rの別のデータフレームの値を使用して列を埋める方法

  19. 19

    あるデータフレームから別のデータフレームで欠落している値を検索する正しい方法

  20. 20

    r の ID に従って、ある列から別の列の値を検索します。

  21. 21

    別のデータフレームの列で変数値のリストを検索する

  22. 22

    共通の列の値が2つ以上あるデータベース内の行を検索する

  23. 23

    文字列を使用して一意の行を検索し、データフレーム列の対応する値を合計します

  24. 24

    あるデータフレームの列全体を別のデータフレームの列の最小値として設定します

  25. 25

    特定のパンダのデータフレーム列で値を検索し、その行の他の値を個別の変数に格納する方法

  26. 26

    別のデータフレームを使用して、あるデータフレームの複数の列の値を条件付きで置き換える

  27. 27

    R別の値に基づいて2番目のデータフレームを検索する

  28. 28

    あるデータフレームの列ヘッダーと値を使用して、別のデータフレームの重みを見つける

  29. 29

    別のデータフレームの値を使用して、行列内のセル値を検索します

ホットタグ

アーカイブ