- 此问题在此处已有答案**:
Numbering rows within groups in a data frame(10个答案)
R data frame rank by groups (group by rank) with package dplyr(3个答案)
23小时前关门了。
我正在使用R编程语言。
我有以下数据集:
id = c(1,2,3,4,5,6)
group_1 = c("a", "a", "b", "b", "b", "b")
var_1 = c(12,32,14,17,14,18)
my_data = data.frame(id, group_1, var_1)
id group_1 var_1
1 1 a 12
2 2 a 32
3 3 b 14
4 4 b 17
5 5 b 14
6 6 b 18
- 在每个"group_1"中,对于"var_1"的每个唯一值(按升序),我尝试分配一个唯一值。**
最终输出应如下所示:
id group_1 var_1 var_2
1 1 a 12 g1
2 2 a 32 g2
3 3 b 14 g1
4 4 b 17 g2
5 5 b 14 g1
6 6 b 18 g3
我试着用下面的代码来完成这个任务:
library(dplyr)
my_data[order(my_data$group_1, my_data$var_1),]
my_data %>%
group_by(group_1) %>%
dplyr::mutate(ID = cur_group_id())
但这并没有产生正确的输出:
# A tibble: 6 x 4
# Groups: group_1 [2]
id group_1 var_1 ID
<dbl> <chr> <dbl> <int>
1 1 a 12 1
2 2 a 32 1
3 3 b 14 2
4 4 b 17 2
5 5 b 14 2
6 6 b 18 2
有谁能告诉我我做错了什么吗?
1条答案
按热度按时间kg7wmglp1#
您的尝试非常接近!
cur_group_id()
为每个组提供唯一的标识符,您可以使用dplyr中的dense_rank()
:创建于2023年1月5日,使用reprex v2.0.2