给出这样的数据框:
game team
zap.che zap
zap.che che
zap.che zap
zap.che zap
zap.che che
bar.var bar
bar.var var
bar.var var
bar.var bar
bar.var bar
我想添加另一个新列,这是我想要的结果,如下所示:
game team poss
zap.che zap 1
zap.che che 1
zap.che zap 2
zap.che zap 2
zap.che che 2
bar.var bar 1
bar.var var 1
bar.var var 1
bar.var bar 2
bar.var bar 2
我的目的是: a)为“团队”列中所有连续出现的相同值分配相同的值 b)在“ poss”列中计数所有包装的“ team”值(1、2、3,依此类推) c)一旦在“游戏”列中更改了值,重新启动相同的过程
答案 0 :(得分:0)
一种选择是按“游戏”分组,然后根据“团队”的第一级获取游程长度ID,并将fill
的{{1}}元素与先前的非NA元素
NA
library(dplyr)
library(tidyr)
library(data.table)
df1 %>%
group_by(game = factor(game, levels = unique(game))) %>%
mutate(poss = as.integer(factor(rleid(team != first(team)) *
NA^(team != first(team))))) %>%
fill(poss)
# A tibble: 10 x 3
# Groups: game [2]
# game team poss
# <fct> <chr> <int>
# 1 zap.che zap 1
# 2 zap.che che 1
# 3 zap.che zap 2
# 4 zap.che zap 2
# 5 zap.che che 2
# 6 bar.var bar 1
# 7 bar.var var 1
# 8 bar.var var 1
# 9 bar.var bar 2
#10 bar.var bar 2
答案 1 :(得分:0)
我们可以创建一个新列,表示数据帧的row_number()
,group_by
game
和team
,并在连续{{ 1}}大于1。
diff