我真的是r和stackoverflow的新手。对于这个新手问题,我们事先表示歉意。
我有一个如下表所示的面板数据集。
1 -------- 5
1 -------- 1
1 -------- 2
1 -------- 5
2 -------- 1
2 -------- 1
2 -------- 5
2 -------- 1
3 -------- 1
3 -------- 3
3 -------- 1
3 -------- 2
当选择为1时,我想添加另一列,如下表所示。这基本上是在ID中对选择1进行排序。
1 -------- 5 -------- 0
1 -------- 1 -------- 1
1 -------- 2 -------- 0
1 -------- 5 -------- 0
2 -------- 1 -------- 1
2 -------- 1 -------- 2
2 -------- 5 -------- 0
2 -------- 1 -------- 3
3 -------- 1 -------- 1
3 -------- 3 -------- 0
3 -------- 1 -------- 2
3 -------- 2 -------- 1
谢谢。
最好的问候, 帕夏
答案 0 :(得分:2)
您可以尝试:
library(dplyr)
df %>%
group_by(ID) %>%
mutate(BUS = ifelse(Choice == 1, cumsum(Choice == 1), 0))
# A tibble: 12 x 3
# Groups: ID [3]
ID Choice BUS
<int> <int> <dbl>
1 1 5 0
2 1 1 1
3 1 2 0
4 1 5 0
5 2 1 1
6 2 1 2
7 2 5 0
8 2 1 3
9 3 1 1
10 3 3 0
11 3 1 2
12 3 2 0