gpt4 book ai didi

r - 组内连续且唯一的编号

转载 作者:行者123 更新时间:2023-12-02 20:30:52 25 4
gpt4 key购买 nike

我有一个数据框,如下所示:

DF_A <- data.frame(
Group_1 = c("A", "A", "A", "A", "A", "B", "B", "B", "B", "C"),
Group_2 = c("A", "B", "C", "A", "B", "A", "B", "A", "C", "A")
)

我想为 Group_1 ID 分配一个连续的数字,对于相同的 Group_2 ID,该数字应该是唯一的。例如,A+A从1开始,A+B从2开始(相同的Group_1 ID,但新的Group_2 ID),...,A+A又是1(显然是重复)。 B+A 是 1(新的 Group_1 ID),...,B+A(相同的 Group_1 ID,但新的 Group_2 ID)...等等。

结果应该是这样的。

DF_B <- data.frame(
Group_1 = c("A", "A", "A", "A", "A", "B", "B", "B", "B", "C"),
Group_2 = c("A", "B", "C", "A", "B", "A", "B", "A", "C", "A"),
ID = c(1, 2, 3, 1, 2, 1, 2, 1, 1, 1)
)

我调查了有关相应方法的各种帖子,例如单一 groups within groups ,或 combination - 没有任何成功 - 以前的帖子未涵盖此案例。

提前谢谢您。

最佳答案

使用 ave 实现此目的的一种方法是

DF_A$ID <- ave(DF_A$Group_2, DF_A$Group_1, FUN = function(x) match(x, unique(x)))

DF_A
# Group_1 Group_2 ID
#1 A A 1
#2 A B 2
#3 A C 3
#4 A A 1
#5 A B 2
#6 B A 1
#7 B B 2
#8 B A 1
#9 B C 3
#10 C A 1

等效的dplyr方式是:

library(dplyr)
DF_A %>%
group_by(Group_1) %>%
mutate(ID = match(Group_2, unique(Group_2)))

关于r - 组内连续且唯一的编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48799264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com