考虑以下数据集:
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
答案 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())