申し訳ありませんが、タイトルのより良い名前を思い付くことができませんでした。私は目前の問題を言葉で説明するのに非常に苦労しているので、代わりにデータフレームで例を示しましょう。
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
一見、このようなデータ操作に苦労するとは思いませんでしたが、残念ながらかなり難しいと感じています。どんな助けでもいただければ幸いです!
ありがとう、
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_id
、team4_id
など、必要に応じて。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加