boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
DataSciences版 - 在R里merge两个dataframe太慢了
相关主题
Memory Error in pandas.concat with Python
Project :advertersiment click prediction
求助 信息提取 (转载)
random forest 有没有可能保证某几个变量一直被选上
Spark开始使用DataFrame
问一道(大)数据 algorithm (转载)
如何改变spark dataframe的column names
spark上一两个million的时间序列数据
big set intersection in pig
我现在有一个15个variable的回归模型。 有什么系统性的方法去
相关话题的讨论汇总
话题: merge话题: long话题: rnorm话题: dataframe话题: elapsed
进入DataSciences版参与讨论
1 (共1页)
g*r
发帖数: 67
1
R的merge效率太低了。根据一个列合并两个dataframe,长的有1m行,短的1k行:
long =data.frame(a=seq(1,1000000), b=rnorm(10) )
short=data.frame(a=seq(1,2000, 2), c=rnorm(10) )
system.time(merge(x=long, y=short, all.x=T))
user system elapsed
10.286 0.370 10.624
4m行就要将近1分钟。8m行超过2分钟。16m要4分钟。
我的真实数据比例子里的复杂些,且有100m行或更高,卡了半天没动静,只好强行终止
进程。对这个效率有点失望。早听说merge很慢,这次领教了。
如果不依靠外部程序(shell,python之类的script),大家是怎么多快好省做合并的
呢?菜鸟一个,轻拍。
x******m
发帖数: 736
2
这个没办法,R就是慢。R在出来table的时候,后台会有很多enviromental variables
,所以会很慢。况且你是100m row的data,也不小了,好奇你是怎么读到R里面的?
既然都会R了,就试试python吧,很简单的,几行就能搞定。
z*****i
发帖数: 366
3
http://stackoverflow.com/questions/11146967/efficient-alternati

【在 g*r 的大作中提到】
: R的merge效率太低了。根据一个列合并两个dataframe,长的有1m行,短的1k行:
: long =data.frame(a=seq(1,1000000), b=rnorm(10) )
: short=data.frame(a=seq(1,2000, 2), c=rnorm(10) )
: system.time(merge(x=long, y=short, all.x=T))
: user system elapsed
: 10.286 0.370 10.624
: 4m行就要将近1分钟。8m行超过2分钟。16m要4分钟。
: 我的真实数据比例子里的复杂些,且有100m行或更高,卡了半天没动静,只好强行终止
: 进程。对这个效率有点失望。早听说merge很慢,这次领教了。
: 如果不依靠外部程序(shell,python之类的script),大家是怎么多快好省做合并的

i********t
发帖数: 809
4
不是都该用data.table了吗。。。
S******y
发帖数: 1123
5
Python is the way to go
You can load your smaller file into a dictionary first...
g*r
发帖数: 67
6
长的数据100m行不是读入,而是在R里面生成的。
短的数据才是从外部文件导入的。
想把两者合并。

variables

【在 x******m 的大作中提到】
: 这个没办法,R就是慢。R在出来table的时候,后台会有很多enviromental variables
: ,所以会很慢。况且你是100m row的data,也不小了,好奇你是怎么读到R里面的?
: 既然都会R了,就试试python吧,很简单的,几行就能搞定。

B*O
发帖数: 105
7
用match比较快。
> long =data.frame(a=seq(1,1000000), b=rnorm(10) )
> short=data.frame(a=seq(1,2000, 2), c=rnorm(10) )
> system.time(merge(x=long, y=short, all.x=T))
user system elapsed
7.253 0.071 7.385
> system.time(long$c<-rep(as.numeric(NA),dim(long)[1]))
user system elapsed
0.002 0.000 0.001
> system.time(long$c[match(short$a,long$a)]<-short$c)
user system elapsed
0.119 0.000 0.119
g*r
发帖数: 67
8
出于力求“简单统一”的考虑,不想调用其他程序。(比如换到windows下跑,就需要
先安装python了)
试了一下大家的另外两个建议。
data.table是个好东西,瞬间完成!match稍慢,但可以接受。
s*********e
发帖数: 1051
9
try sqldf with index. there is no overhead for data table conversion.

【在 g*r 的大作中提到】
: 出于力求“简单统一”的考虑,不想调用其他程序。(比如换到windows下跑,就需要
: 先安装python了)
: 试了一下大家的另外两个建议。
: data.table是个好东西,瞬间完成!match稍慢,但可以接受。

r********n
发帖数: 7441
10
这种简单查找型 merg 显然是用 awk 比较快了

【在 g*r 的大作中提到】
: R的merge效率太低了。根据一个列合并两个dataframe,长的有1m行,短的1k行:
: long =data.frame(a=seq(1,1000000), b=rnorm(10) )
: short=data.frame(a=seq(1,2000, 2), c=rnorm(10) )
: system.time(merge(x=long, y=short, all.x=T))
: user system elapsed
: 10.286 0.370 10.624
: 4m行就要将近1分钟。8m行超过2分钟。16m要4分钟。
: 我的真实数据比例子里的复杂些,且有100m行或更高,卡了半天没动静,只好强行终止
: 进程。对这个效率有点失望。早听说merge很慢,这次领教了。
: 如果不依靠外部程序(shell,python之类的script),大家是怎么多快好省做合并的

o**a
发帖数: 1315
11
进来学习
1 (共1页)
进入DataSciences版参与讨论
相关主题
我现在有一个15个variable的回归模型。 有什么系统性的方法去
请教问题 R list of list to vector to data frame
PCA 可以用在mixture of continuous 和categorical variables (转载)
几个星期前看到一个3000 feature 的选重要variable的面试帖子,
有没有大牛来classifiy一下 PCA用法吗?
请教大家一个做feature的问题
怎么处理categorical variable有很多个level的
求教linear regression的一道面试题
请教一个用R做cox regression的问题
紧急求救: SMOTE-NC 处理categorical data for unbalanced class!!!
相关话题的讨论汇总
话题: merge话题: long话题: rnorm话题: dataframe话题: elapsed