Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何分组并获得dplyr中离散列的相反值?_R_Dplyr - Fatal编程技术网

如何分组并获得dplyr中离散列的相反值?

如何分组并获得dplyr中离散列的相反值?,r,dplyr,R,Dplyr,嗨,我有一个简单的问题,我在处理体育数据时遇到了很多,我必须按GameID变量分组并手动创建对手变量。我做了大量的数据旋转,所以我不希望每场比赛只有一行,而是希望每支球队都有自己的一行,并为每一行包含一个对手变量。我通常通过创建2个数据帧、更改列名、连接、过滤来实现这一点,这感觉太复杂了,我正在寻找更好的方法 您可以在R中遵循这个示例 library(tidyverse) df <- data.frame(team = c('BKN', 'MIL'), m

嗨,我有一个简单的问题,我在处理体育数据时遇到了很多,我必须按GameID变量分组并手动创建对手变量。我做了大量的数据旋转,所以我不希望每场比赛只有一行,而是希望每支球队都有自己的一行,并为每一行包含一个对手变量。我通常通过创建2个数据帧、更改列名、连接、过滤来实现这一点,这感觉太复杂了,我正在寻找更好的方法

您可以在R中遵循这个示例

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