根据分类列将 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
我有 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