根据分类列将 id 分配给行

Assigning id to rows according to categorical column

我有 15 个主题的数据框,有 3 列: SONA_id(每个科目随机5位数字), action (1/2), reward (1/0).

每个主题有 401 行(步骤)。 我想为每个主题分配一个 id,一个 1:15.

范围内的数字

有什么方法可以在 dplyr 中做到这一点而不使用 case_when 和 15 个案例?

如果 d 是您的数据集,您可以这样做:

d %>%
    group_by(SONA_id) %>%
    mutate(id = cur_group_id())

cur_group_id() 为每个组提供唯一的数字标识符。

举个例子:

> d
# A tibble: 4 x 1
  SONA_id
  <chr>  
1 AAAA   
2 AAAA   
3 BBBB   
4 BBBB   

> d %>% group_by(SONA_id) %>% mutate(id = cur_group_id())
# A tibble: 4 x 2
# Groups:   SONA_id [2]
  SONA_id    id
  <chr>   <int>
1 AAAA        1
2 AAAA        1
3 BBBB        2
4 BBBB        2