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,都有两个team_id。如果可以解决问题,则将game_id进行排序,并可以对team_id进行分组,以便对于每个game_id,出现第一个team_id的所有实例,然后出现第二个team_id的所有实例(当前情况并非如此,例如您可以在第33和34行中看到)。我需要创建第三列,称为team2_id,在此列中是与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另两列相同的列team1_idteam2_id包含team_id第一个resp。出现在数据中的游戏第二队。它还将具有team_id等于team1_id等于team2_id取决于实际玩家所属团队的列。

有趣的事实:如果game_id有两个以上的team_id是代码将正常创建新列team3_idteam4_id等需要。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据r中的ID从另一列中的一列中查找值

来自分类Dev

查找一列的最大值(按组),然后将值插入R中的另一数据帧

来自分类Dev

R数据帧:根据另一列中的值更改第一列中的值

来自分类Dev

R:提取数据帧中另一列(y)至少具有+1的一列(x)的值

来自分类Dev

在数据帧的每一列中查找最接近零的值-R

来自分类Dev

如果另一列中的值在列表中,则更改一列中的值[R]

来自分类Dev

根据数据框中另一列的唯一值查找一列的所有组合

来自分类Dev

快速测试R数据帧以查看一列中的行值是否在数据帧的另一列中

来自分类Dev

根据 R 中另一列中的值设置一列的值

来自分类Dev

如何使用循环以基于R数据帧中另一列的平均值替换值

来自分类Dev

如何从同一数据框中查找另一列中包含唯一值的列值?

来自分类Dev

根据R中另一列的最小值获得一列的对应值

来自分类Dev

根据R中另一列的值选择列

来自分类Dev

如何基于向量隔离数据帧中的值,然后使用R将其乘以同一数据帧中的另一列?

来自分类Dev

如何从R中的两个不同数据帧中添加两列,其中一列只是另一列的唯一值的子集

来自分类Dev

如果一列中的值大于另一列中的值,则交换R中各列中的值

来自分类Dev

使用字典参考另一列值来映射熊猫数据框的一列中的缺失值

来自分类Dev

R:将一列中的每个不同值组合到另一列中

来自分类Dev

汇总一列中的值并按R中的另一列分组

来自分类Dev

在列表列中查找小于或等于R中另一列的最大值

来自分类Dev

在R数据帧中用另一列值重复一个列值

来自分类Dev

给定另一列的值,减去熊猫数据帧中的连续时间帧

来自分类Dev

如何将一列中的值映射到数据框的另一列?

来自分类Dev

合并每个数据帧的一列中的值对

来自分类Dev

将一列条件中的值替换为另一列:R

来自分类Dev

基于R中另一列的值进行计数

来自分类Dev

通过R中的另一列条件检索值

来自分类Dev

在数据框的列中查找与另一列中的两个值相对应的值

来自分类Dev

根据 R 中数据帧中另一列的条件过滤数据帧

Related 相关文章

  1. 1

    根据r中的ID从另一列中的一列中查找值

  2. 2

    查找一列的最大值(按组),然后将值插入R中的另一数据帧

  3. 3

    R数据帧:根据另一列中的值更改第一列中的值

  4. 4

    R:提取数据帧中另一列(y)至少具有+1的一列(x)的值

  5. 5

    在数据帧的每一列中查找最接近零的值-R

  6. 6

    如果另一列中的值在列表中,则更改一列中的值[R]

  7. 7

    根据数据框中另一列的唯一值查找一列的所有组合

  8. 8

    快速测试R数据帧以查看一列中的行值是否在数据帧的另一列中

  9. 9

    根据 R 中另一列中的值设置一列的值

  10. 10

    如何使用循环以基于R数据帧中另一列的平均值替换值

  11. 11

    如何从同一数据框中查找另一列中包含唯一值的列值?

  12. 12

    根据R中另一列的最小值获得一列的对应值

  13. 13

    根据R中另一列的值选择列

  14. 14

    如何基于向量隔离数据帧中的值,然后使用R将其乘以同一数据帧中的另一列?

  15. 15

    如何从R中的两个不同数据帧中添加两列,其中一列只是另一列的唯一值的子集

  16. 16

    如果一列中的值大于另一列中的值,则交换R中各列中的值

  17. 17

    使用字典参考另一列值来映射熊猫数据框的一列中的缺失值

  18. 18

    R:将一列中的每个不同值组合到另一列中

  19. 19

    汇总一列中的值并按R中的另一列分组

  20. 20

    在列表列中查找小于或等于R中另一列的最大值

  21. 21

    在R数据帧中用另一列值重复一个列值

  22. 22

    给定另一列的值,减去熊猫数据帧中的连续时间帧

  23. 23

    如何将一列中的值映射到数据框的另一列?

  24. 24

    合并每个数据帧的一列中的值对

  25. 25

    将一列条件中的值替换为另一列:R

  26. 26

    基于R中另一列的值进行计数

  27. 27

    通过R中的另一列条件检索值

  28. 28

    在数据框的列中查找与另一列中的两个值相对应的值

  29. 29

    根据 R 中数据帧中另一列的条件过滤数据帧

热门标签

归档