Stata的egen group()函数的R等效项

时间:2019-06-21 20:57:54

标签: r dplyr stata

考虑以下数据集:

df = data.frame(id = c(1,1,1,2,2,2,3,3,3), 
                time = c(1,2,3,1,2,3,1,2,3), 
                x = c(8,8,9,7,7,7,7,7,8), 
                id_x = c(1,1,2,3,3,3,4,4,5))

我想在 R 中进行计算(最好使用dplyr),变量id_x用于标识变量id和{{1 }}。

在Stata中,我可以执行以下操作:

x

2 个答案:

答案 0 :(得分:2)

我们可以使用dplyr::group_indices

library(dplyr)

#df1 %>% mutate(id_xx = group_indices(.,id,x))
df1 %>% group_by(id,x) %>% mutate(id_xx = group_indices())
#> # A tibble: 9 x 5
#> # Groups:   id, x [5]
#>      id  time     x  id_x id_xx
#>   <dbl> <dbl> <dbl> <dbl> <int>
#> 1     1     1     8     1     1
#> 2     1     2     8     1     1
#> 3     1     3     9     2     2
#> 4     2     1     7     3     3
#> 5     2     2     7     3     3
#> 6     2     3     7     3     3
#> 7     3     1     7     4     4
#> 8     3     2     7     4     4
#> 9     3     3     8     5     5

数据:

df1 <-  data.frame(id = c(1,1,1,2,2,2,3,3,3), 
                time = c(1,2,3,1,2,3,1,2,3), 
                x = c(8,8,9,7,7,7,7,7,8), 
                id_x = c(1,1,2,3,3,3,4,4,5))

答案 1 :(得分:1)

在撰写本文时,M--答案是完全正确的答案,但是dplyr已弃用group_indices(),因此现在的代码是

df1 %>% group_by(complex, palliative) %>% mutate(cplx_pal = cur_group_id())