Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中大型数据集的非唯一键合并_R - Fatal编程技术网

R中大型数据集的非唯一键合并

R中大型数据集的非唯一键合并,r,R,我有一个很大的数据集all: UserKey kind_id user_name sex 1 7472505 2 Jane <NA> 2 4564687 5 Natalie F 3 4564687 2 Natalie F 4 4564687 2 Natalie F 5 4564687 5 Natalie F 6

我有一个很大的数据集
all

UserKey  kind_id   user_name  sex
1   7472505       2       Jane    <NA>
2   4564687       5     Natalie    F
3   4564687       2     Natalie    F
4   4564687       2     Natalie    F
5   4564687       5     Natalie    F    
6   5257695       2       Nelly    F


> dim(all_orders)
[1] 104979393         4
匹配第一个数据集中的
用户名
,以及字典中的
用户名

我的尝试:

1。功能强大

get_sex <- function(input){
sex <- names[names$name==input,]$dsex
return(as.character(sex))
}

all$dsex <- sapply(all$user_name, get_sex)

如果您将它们转换为
数据,则获取性。表
,尝试
所有[name,on=c(“user\u name”=“name”),dsex:=dsex]
对于#2,您在dplyr版本中使用摘要-是否有特定的原因让您分组,然后进行摘要,而不是执行联接?我想通过查看您的数据,左_join()就可以做到这一点。通常情况下,merge<*applydata.table
,请尝试
all[names,on=c(“user_name”=“name”),dsex:=dsex]
For#2,您在dplyr版本中使用摘要-是否有特定的原因让您分组,然后进行摘要,而不是执行联接?我想通过查看您的数据,左_join()就可以做到这一点。一般来说,merge<*applyget_sex <- function(input){ sex <- names[names$name==input,]$dsex return(as.character(sex)) } all$dsex <- sapply(all$user_name, get_sex)
names <- as.data.table(names, key = 'name')

a <- all %>% group_by(UserKey) %>% summarise(dsex = get_sex(user_name))
allm <- merge(all, names, by.x = c('user_name'), by.y = c('name'), all.x = T, all.y = F)