IT序号网

R:添加一个 dplyr 组标签作为数字

developer 2024年09月07日 编程语言 15 0

<分区>

我无法理解这一定很简单的任务。如何获取组标签为连续数字。

library(dplyr) 
set.seed(1) 
df <- data.frame(id = sample(c('a','b'), 20, T), 
                 name = sample(c('N1', 'N2', 'N3'), 20, T), 
                 val = runif(20)) %>% 
  group_by(id) %>%  
  arrange(id, name) 

我想要的是一个标签 group_no,它指示每个 id dplyr 组中变量 name 的类别数。我在 dplyr 包本身找不到解决方案。像这样:

# A tibble: 20 x 4 
# Groups:   id [2] 
   id    name     val group_no 
   <fct> <fct>  <dbl>     <int> 
 1 a     N1    0.647          1 
 2 a     N1    0.530          1 
 3 a     N1    0.245          1 
 4 a     N2    0.693          2 
 5 a     N2    0.478          2 
 6 a     N2    0.861          2 
 7 a     N3    0.821          3 
 8 a     N3    0.0995         3 
 9 a     N3    0.662          3 
10 b     N1    0.553          1 
11 b     N1    0.0233         1 
12 b     N1    0.519          1 
13 b     N2    0.783          2 
14 b     N2    0.789          2 
15 b     N2    0.477          2 
16 b     N2    0.438          2 
17 b     N2    0.407          2 
18 b     N3    0.732          3 
19 b     N3    0.0707         3 
20 b     N3    0.316          3 

请注意,name 的值可以是任何值,当然通常不会像示例中那样以数字为后缀(否则我可以执行 sub("^N", "", df$name).

我正在寻找与 SO 帖子中的 1:n() 解决方案略有不同的东西,例如 here .


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!