对于您的(更新的?)数据和mutate() 命令的具体问题,您似乎已经在group_by()、arrange() 和mutate() 的正确轨道上。
但对于更广泛的问题,有一些拆分应用问题并不像在 Stata 中那样简单。这是一个汇总组的示例,它具有更明确的拆分应用形式。
library(tidyverse)
a <- data.frame(x = c(1, 1, 1, 1, 2, 2, 2, 2), y = c(3, 3, 4, 4, 5, 5, 6, 6), z = c(8, 7, 6, 5, 4, 3, 2, 1), val = c(1, 2, 3, 4, 5, 6, 7, 8))
a %>%
group_split(x, y) %>%
purrr::map(summary)
#> [[1]]
#> x y z val
#> Min. :1 Min. :3 Min. :7.00 Min. :1.00
#> 1st Qu.:1 1st Qu.:3 1st Qu.:7.25 1st Qu.:1.25
#> Median :1 Median :3 Median :7.50 Median :1.50
#> Mean :1 Mean :3 Mean :7.50 Mean :1.50
#> 3rd Qu.:1 3rd Qu.:3 3rd Qu.:7.75 3rd Qu.:1.75
#> Max. :1 Max. :3 Max. :8.00 Max. :2.00
#>
#> [[2]]
#> x y z val
#> Min. :1 Min. :4 Min. :5.00 Min. :3.00
#> 1st Qu.:1 1st Qu.:4 1st Qu.:5.25 1st Qu.:3.25
#> Median :1 Median :4 Median :5.50 Median :3.50
#> Mean :1 Mean :4 Mean :5.50 Mean :3.50
#> 3rd Qu.:1 3rd Qu.:4 3rd Qu.:5.75 3rd Qu.:3.75
#> Max. :1 Max. :4 Max. :6.00 Max. :4.00
#>
[...detail omitted...]