如何分组并获得dplyr中离散列的相反值?
嗨,我有一个简单的问题,我在处理体育数据时遇到了很多,我必须按GameID变量分组并手动创建对手变量。我做了大量的数据旋转,所以我不希望每场比赛只有一行,而是希望每支球队都有自己的一行,并为每一行包含一个对手变量。我通常通过创建2个数据帧、更改列名、连接、过滤来实现这一点,这感觉太复杂了,我正在寻找更好的方法 您可以在R中遵循这个示例如何分组并获得dplyr中离散列的相反值?,r,dplyr,R,Dplyr,嗨,我有一个简单的问题,我在处理体育数据时遇到了很多,我必须按GameID变量分组并手动创建对手变量。我做了大量的数据旋转,所以我不希望每场比赛只有一行,而是希望每支球队都有自己的一行,并为每一行包含一个对手变量。我通常通过创建2个数据帧、更改列名、连接、过滤来实现这一点,这感觉太复杂了,我正在寻找更好的方法 您可以在R中遵循这个示例 library(tidyverse) df <- data.frame(team = c('BKN', 'MIL'), m
library(tidyverse)
df <- data.frame(team = c('BKN', 'MIL'),
moneyline = c('-110', '-105'),
gameid = c(1, 1)) %>%
group_by(gameid) %>%
mutate(opponent = team) %>% ### idk how to create this variable properly
ungroup()
库(tidyverse)
df%
组别依据(配子ID)%>%
mutate(对手=团队)%>%####idk如何正确创建此变量
解组()
假设MIL正在和BKN比赛。它们都有相同的gameid变量。基本上,我只想根据该变量分组,并生成一个对手变量,该变量为我提供了对方团队,因此该对手!=团队每个玩家ID只能有2个可能的团队在玩
有人有什么简单的技巧可以做到这一点吗?我们可以使用
rev
df <- data.frame(team = c('BKN', 'MIL'),
moneyline = c('-110', '-105'),
gameid = c(1, 1)) %>%
group_by(gameid) %>%
mutate(opponent = rev(team)) %>% #
ungroup()
df%
组别依据(配子ID)%>%
变异(对手=修正(团队))%>%#
解组()
我们可以使用rev
df <- data.frame(team = c('BKN', 'MIL'),
moneyline = c('-110', '-105'),
gameid = c(1, 1)) %>%
group_by(gameid) %>%
mutate(opponent = rev(team)) %>% #
ungroup()
df%
组别依据(配子ID)%>%
变异(对手=修正(团队))%>%#
解组()
另一种可能是:
df %>%
group_by(gameid) %>%
mutate(opponent=c(last(team), first(team)))
输出:
team moneyline gameid opponent
<chr> <chr> <dbl> <chr>
1 BKN -110 1 MIL
2 MIL -105 1 BKN
team moneyline玩家ID对手
1 BKN-110 1密耳
2密耳-105 1 BKN
另一种可能是:
df %>%
group_by(gameid) %>%
mutate(opponent=c(last(team), first(team)))
输出:
team moneyline gameid opponent
<chr> <chr> <dbl> <chr>
1 BKN -110 1 MIL
2 MIL -105 1 BKN
team moneyline玩家ID对手
1 BKN-110 1密耳
2密耳-105 1 BKN