楼主: winslow
2432 6

[程序分享] 和R的比较 [推广有奖]

  • 0关注
  • 1粉丝

已卖:529份资源

本科生

55%

还不是VIP/贵宾

-

威望
0
论坛币
2512 个
通用积分
3.1196
学术水平
3 点
热心指数
5 点
信用等级
3 点
经验
282 点
帖子
60
精华
0
在线时间
95 小时
注册时间
2005-5-4
最后登录
2020-6-26

楼主
winslow 发表于 2013-12-27 00:54:25 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
有人用julia的DataFrames和r的data.tables比过吗? 慢太多了!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Dataframe tables frames Frame Julia julia

已有 1 人评分论坛币 热心指数 收起 理由
求证1加1 + 20 + 1 鼓励积极发帖讨论

总评分: 论坛币 + 20  热心指数 + 1   查看全部评分

沙发
luisluan 发表于 2013-12-27 01:13:23 来自手机
具体干什么?

藤椅
winslow 发表于 2013-12-27 01:17:00
数据处理的速度。比如下面的r code:
n <- 1000000
dt1 <- data.table(x = sample(1:5, n, replace = T), y = runif(n))
dt2 <- dt1[, list(avg = mean(y)), by = x]

板凳
jmpamao 发表于 2013-12-27 18:04:57

对data.table 到时刮目相看。

用 julia 和你的写的 做了对比
  1. using Distributions,DataFrames
  2. n=1_000_000
  3. dat = DataFrame(x = sample(1:5,n), y = rand(Uniform(0,1),n))
  4. by(dat,"x",dat->mean(dat["y"]))
  5. 5x2 DataFrame:
  6.         x       x1
  7. [1,]    1 0.500125
  8. [2,]    2 0.500472
  9. [3,]    3 0.501443
  10. [4,]    4 0.499964
  11. [5,]    5  0.50108
  12. @ elapsed by(dat,"x",dat->mean(dat["y"]))
复制代码
这个BY应该是向量化的,julia 用时0.2秒, data.table0.05秒, 而data.frame后tapply花时就太久太久。。。
看作者一些blog,介绍非向量化的比向量的要快多了。





报纸
jmpamao 发表于 2013-12-27 18:20:39
winslow 发表于 2013-12-27 01:17
数据处理的速度。比如下面的r code:
n
试试看julia用循环语句 速度能否快些

地板
jmpamao 发表于 2013-12-27 21:24:25
想看看循环的速度是怎么样的?
#另一台比较破的笔记本算的
  1. using Distributions,DataFrames
  2. n=1_000_000
  3. dat = DataFrame(x = sample(1:5,n), y = rand(Uniform(0,1),n))
复制代码
  1. #tic()
  2. [sum1=0,j1=0,sum2=0,j2=0,sum3=0,j3=0,sum4=0,j4=0,sum5=0,j5=0]

  3. for i in 1:size(dat)[1]
  4.   if dat[i,"x"] ==1
  5.     sum1 += dat[i,"y"]
  6.     j1 +=1
  7.     elseif dat[i,"x"] ==2
  8.     sum2 += dat[i,"y"]
  9.     j2 +=1
  10.     elseif dat[i,"x"] ==3
  11.     sum3 += dat[i,"y"]
  12.     j3 +=1
  13.     elseif dat[i,"x"] ==4
  14.     sum4 += dat[i,"y"]
  15.     j4 +=1
  16.   else
  17.     sum5 +=dat[i,"y"]
  18.     j5 +=1
  19.   end
  20. end
  21. [sum1/j1,sum2/j2,sum3/j3,sum4/j4,sum5/j5]
  22. #toc()
复制代码
#elapsed time: 0.311458916 seconds
  1. #tic()
  2. by(dat,"x",dat->mean(dat["y"]))
  3. #toc()
  4. #elapsed time: 0.393046295 seconds
复制代码
一百万次循环, 可以看出非向量化用时是 比 向量化用时 短的
而这比 R,优势已经不是一点点了。











已有 1 人评分学术水平 热心指数 信用等级 收起 理由
求证1加1 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

7
求证1加1 发表于 2013-12-28 00:24:37
Julia是不需要向量化的,这点与R相反,在Julia里向量化恰恰会适得其反
个人主页,欢迎订阅http://chenangliu.info/

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-6 09:01