Извините, я не мог придумать лучшего названия для названия, я очень сильно борюсь с объяснением проблемы под рукой словами, поэтому позвольте мне показать вместо этого вместо примера используется блок данных.R dataframe - используя общее значение в одном столбце, чтобы найти значения в другом столбце
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
Это ядро данных, с которым я работаю. Важное значение имеет тот факт, что для каждой игры_ид есть две команды. Если это помогает в решении проблемы, все файлы будут отсортированы, а team_ids могут быть сгруппированы таким образом, чтобы для каждого game_id появлялись все экземпляры первого командного_ид, затем появлялись все экземпляры второго team_id (в настоящее время это не так, поскольку вы можете видеть в строках 33 и 34). Мне нужно создать третий столбец, называемый team2_id, где в этом столбце находятся другие team_ids, соответствующие game_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
строки дублируются в dataframe, да. фрейм соответствует баскетбольной игре, и каждая строка соответствует конкретному игроку (так что для любой данной игры и команды есть 8-10 игроков, которые играют) – Canovice
Все верно, что может быть реализовано с помощью соединения. NB, что ваш желаемый результат пропускает информацию о том, в какую команду принадлежал конкретный игрок; мое решение содержит эту информацию. Если вы этого не хотите, просто отпустите столбец 'team_id' и переименуйте столбцы' team1_id' и 'team2_id' по мере необходимости. – AlexR