在R中合并不是大数据集的唯一键

时间:2017-03-10 10:57:47

标签: 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   5257695       2       Nelly    F


> dim(all_orders)
[1] 104979393         4

我必须从另一个数据集dsex(名称字典)添加新列names

name dsex
1 Albine    F
2 Nataly    F  
3 Nelly     F
4 Jane      F
5 Miko      F

> dim(names)
[1] 82187     2

匹配第一个数据集中的user_name和字典中的name

我的尝试:

1。祝福和成功

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

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

它有效,但不适用于大型数据集。

2。 dplyr和data.table

names <- as.data.table(names, key = 'name')

a <- all %>% group_by(UserKey) %>% summarise(dsex = get_sex(user_name))

不适用于大型数据集。

第3。合并

allm <- merge(all, names, by.x = c('user_name'), by.y = c('name'), all.x = T, all.y = F)

好多了,但不是我的数据集(5毫升行没问题)。

那么最有效的方法是什么?

0 个答案:

没有答案