首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据列表中的列确定组关联,其中至少有2/5次对应信息?

如何根据列表中的列确定组关联,其中至少有2/5次对应信息?
EN

Stack Overflow用户
提问于 2021-07-20 17:24:52
回答 1查看 35关注 0票数 1

我有一个列表,它引用了5列

代码语言:javascript
复制
list<-c("Last Name","First Name", "Email","Address", "Phone Number")

我有一个像这样的数据集

代码语言:javascript
复制
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

如何像这样组织数据集

代码语言:javascript
复制
 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

请注意,最后一个韦恩与第一个韦恩没有关联,因为它只有一个与其他时候相同的列,还有韦恩。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-20 17:28:53

下面是match的一个选项。我们将列的子集按行与paste一起使用do.call,然后使用该子集与那些unique值进行match以获得索引。

代码语言:javascript
复制
v1 <- do.call(paste, df1[list])
df1$Group <- match(v1, unique(v1))

或者使用dplyr

代码语言:javascript
复制
library(dplyr)
df1 %>%
    group_by(across(all_of(list))) %>%
    mutate(Group = cur_group_id())

如果要删除NA,请使用unite

代码语言:javascript
复制
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)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68459035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档