我有一个列表,它引用了5列
list<-c("Last Name","First Name", "Email","Address", "Phone Number")我有一个像这样的数据集
ID|First Name|Last Name|First Name|Email |Address |Phone
1 Wayne Bruce BWayne@gmail.com 1995 Gotham Avenue 111-111-1111
2 Kent Clark Ckent@Yahoo.com 200 Kryptonite St 222-222-2222
3 Wayne 200 Kryptonite St
4 Parker Peter PParker@gmail.com 100 Mae Road 333-333-3333
4 Wayne Bruce
5 Parker 333-333-3333
6 Murdock Matthew MMurdock@hotmai.com 100 Main Road 444-444-4444
7 Wayne如何像这样组织数据集
ID|First |Last Name|First Name|Email |Address |Phone |Group
1 Wayne Bruce BWayne@gmail.com 1995 Gotham Avenue 111-111-1111 1
2 Kent Clark Ckent@Yahoo.com 200 Kryptonite St 222-222-2222 2
3 Wayne 200 Kryptonite St 1
4 Parker Peter PParker@gmail.com 100 Mae Road 333-333-3333 3
4 Wayne Bruce 1
5 Parker 333-333-3333 3
6 Murdock Matthew MMurdock@hotmai.com 100 Main Road 444-444-4444 4
7 Wayne 5请注意,最后一个韦恩与第一个韦恩没有关联,因为它只有一个与其他时候相同的列,还有韦恩。
发布于 2021-07-20 17:28:53
下面是match的一个选项。我们将列的子集按行与paste一起使用do.call,然后使用该子集与那些unique值进行match以获得索引。
v1 <- do.call(paste, df1[list])
df1$Group <- match(v1, unique(v1))或者使用dplyr
library(dplyr)
df1 %>%
group_by(across(all_of(list))) %>%
mutate(Group = cur_group_id())如果要删除NA,请使用unite
library(tidyr)
df1 %>%
mutate(across(all_of(list), na_if, "")) %>%
unite(grp, all_of(list), na.rm = TRUE) %>%
mutate(Group = match(grp, unique(grp)), grp = NULL)https://stackoverflow.com/questions/68459035
复制相似问题