我拥有的数据:
A | B |
---|---|
1 | a |
2 | c |
2 | e |
3 | f |
4 | h |
5 | c |
5 | e |
我想要的:
如果 A 的不同组中 B 的所有值都匹配,则它们在同一组中。在这种情况下,所有 B 值(c 和 e)都匹配 2 和 5。
A | B | 团体 |
---|---|---|
1 | a | 1 |
2 | c | 2 |
2 | e | 2 |
3 | f | 3 |
4 | h | 4 |
5 | c | 2 |
5 | e | 2 |
我尝试的代码:
library(readxl)
library(dplyr)
library(stringr)
data1 <- read_excel("testing.xlsx")
data2 <- data1 %>%
group_by(A) %>%
group_by(B) %>%
mutate(Group = cur_group_id()) %>%
ungroup()
我从这段代码中得到什么:
A | B | 团体 |
---|---|---|
1 | a | 1 |
2 | c | 2 |
2 | e | 3 |
3 | f | 4 |
4 | h | 5 |
5 | c | 2 |
5 | e | 3 |
注意:我正在操作的原始数据已左连接,然后分组。
library(dplyr)
library(tidyr)
dat |>
arrange(A, B) |>
summarise(B = list(B), .by = A) |>
mutate(Group = cur_group_id(), .by = B) |>
unnest_longer(B)