我拥有的数据:
A | B |
---|---|
1 | a |
2 | c |
2 | e |
3 | f |
4 | h |
5 | c |
5 | e |
我想要什么:
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 |
您可以尝试以下
df %>%
left_join(
(.) %>%
summarise(group = as.factor(toString(sort(B))), .by = A) %>%
mutate(group = as.integer(group))
)
这给出了
A B group
1 1 a 1
2 2 c 2
3 2 e 2
4 3 f 3
5 4 h 4
6 5 c 2
7 5 e 2