R中的面板数据处理

时间:2018-10-25 01:06:10

标签: r panel

我真的是r和stackoverflow的新手。对于这个新手问题,我们事先表示歉意。

我有一个如下表所示的面板数据集。

ID --------选择

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进行排序。

ID --------选择---- BUS

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

谢谢。

最好的问候, 帕夏

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