D******n 发帖数: 2836 | 1 做一个东西,分别用了R和SAS实现。
R比较好写code,可是SAS在速度上超出R很多
基本上SAS是
data new;
set old;
by id;
%dosth;
run;
R就是
new <- split(old,old$id) #这步没有进入速度比较
g<-sapply(new,func_dosth);
由于dosth是对matrix结构的数据进行操作,用R写自然很多,用SAS写比较别扭。
可是一比较,SAS的速度是R的10到20倍。
如果是1秒跟10秒的区别还好,问题是数据都比较大,那就是1天跟20天的区别。
R可以洗洗睡了。 |
k*******a 发帖数: 772 | |
R********n 发帖数: 519 | 3 R除了速度显著慢之外,还有的问题就是可靠性。同一个算法/模型,通常很多package
实现,但是互相之间结果不总是一致,并且也不知道这种开源包到底实现得对不对
整体感觉学术界用来玩玩R还好,业界如果用R的话,只适合一些要求不高的场合
【在 D******n 的大作中提到】 : 做一个东西,分别用了R和SAS实现。 : R比较好写code,可是SAS在速度上超出R很多 : 基本上SAS是 : data new; : set old; : by id; : %dosth; : run; : R就是 : new <- split(old,old$id) #这步没有进入速度比较
|
s********0 发帖数: 2625 | 4 这种月经问题。。。。。。这就好像举重的和短跑的都是搞体育的,举重的天天要和短
跑的比力气,短跑的反过来只愿意比速度。。。。
你要是习惯或者必须遵守某些标准,然后又喜欢用现成的且可靠的package,那就去用
SAS。
你要是想尝试一些很新的东西,或者需要做一些很灵活的东西。。。。。 |
I*****a 发帖数: 5425 | 5 是这个道理。
【在 s********0 的大作中提到】 : 这种月经问题。。。。。。这就好像举重的和短跑的都是搞体育的,举重的天天要和短 : 跑的比力气,短跑的反过来只愿意比速度。。。。 : 你要是习惯或者必须遵守某些标准,然后又喜欢用现成的且可靠的package,那就去用 : SAS。 : 你要是想尝试一些很新的东西,或者需要做一些很灵活的东西。。。。。
|
q**j 发帖数: 10612 | 6 请问你是什么操作系统?好像windows下面差很多,linux下面就不一定了。另外我自己
尝试过,windows下面R根本就不能处理大数据,但是好像挺朋友说linux下面就没有问
题。请问这个是否属实,为什么?另外请问python和R各有什么比较好的optimization
的package。多谢。
做一个东西,分别用了R和SAS实现。
R比较好写code,可是SAS在速度上超出R很多
基本上SAS是
data new;
set old;
by id;
%dosth;
run;
R就是
new <- split(old,old$id) #这步没有进入速度比较
g<-sapply(new,func_dosth);
由于dosth是对matrix结构的数据进行操作,用R写自然很多,用SAS写比较别扭。
可是一比较,SAS的速度是R的10到20倍。
如果是1秒跟10秒的区别还好,问题是数据都比较大,那就是1天跟20天的区别。
R可以洗洗睡了。
【在 D******n 的大作中提到】 : 做一个东西,分别用了R和SAS实现。 : R比较好写code,可是SAS在速度上超出R很多 : 基本上SAS是 : data new; : set old; : by id; : %dosth; : run; : R就是 : new <- split(old,old$id) #这步没有进入速度比较
|
R********n 发帖数: 519 | 7 追求新和灵活也可以其他选择。比如matlab,官方package很可靠。开源/free的
package,可以自己去看源代码保证质量
【在 s********0 的大作中提到】 : 这种月经问题。。。。。。这就好像举重的和短跑的都是搞体育的,举重的天天要和短 : 跑的比力气,短跑的反过来只愿意比速度。。。。 : 你要是习惯或者必须遵守某些标准,然后又喜欢用现成的且可靠的package,那就去用 : SAS。 : 你要是想尝试一些很新的东西,或者需要做一些很灵活的东西。。。。。
|
s********0 发帖数: 2625 | 8 嗯,matlab是不错,但matlab毕竟不是专门用来做统计的。。。。。。而且你说的这几
个优点,R也都具备。
说来说去,如果不能提出具体的情况和要求,只是泛泛的比较这些软件,真没什么意思
。。。。。
【在 R********n 的大作中提到】 : 追求新和灵活也可以其他选择。比如matlab,官方package很可靠。开源/free的 : package,可以自己去看源代码保证质量
|
D******n 发帖数: 2836 | 9 这个比喻不恰当吧。 anyway,不是非要用R,而是R整天在那里鼓吹可以代替SAS。还
big Data。每每用了,都太失望。我这里还没有涉及到任何package的问题,只是一些
简单的对二维数据的操作。
【在 s********0 的大作中提到】 : 这种月经问题。。。。。。这就好像举重的和短跑的都是搞体育的,举重的天天要和短 : 跑的比力气,短跑的反过来只愿意比速度。。。。 : 你要是习惯或者必须遵守某些标准,然后又喜欢用现成的且可靠的package,那就去用 : SAS。 : 你要是想尝试一些很新的东西,或者需要做一些很灵活的东西。。。。。
|
D******n 发帖数: 2836 | 10 这个就是linux下面的R跟SAS比,
python也是我现在想到的东西,不知道是否给R快。我对python不熟,可能statcompute
可以回答这个问题。
optimization
【在 q**j 的大作中提到】 : 请问你是什么操作系统?好像windows下面差很多,linux下面就不一定了。另外我自己 : 尝试过,windows下面R根本就不能处理大数据,但是好像挺朋友说linux下面就没有问 : 题。请问这个是否属实,为什么?另外请问python和R各有什么比较好的optimization : 的package。多谢。 : : 做一个东西,分别用了R和SAS实现。 : R比较好写code,可是SAS在速度上超出R很多 : 基本上SAS是 : data new; : set old;
|
|
|
N**N 发帖数: 1713 | 11 没看到statcompute版。。是俱乐部吗?
statcompute
【在 D******n 的大作中提到】 : 这个就是linux下面的R跟SAS比, : python也是我现在想到的东西,不知道是否给R快。我对python不熟,可能statcompute : 可以回答这个问题。 : : optimization
|
h***t 发帖数: 2540 | 12 你R code写的不efficient当然跑的慢。
【在 D******n 的大作中提到】 : 做一个东西,分别用了R和SAS实现。 : R比较好写code,可是SAS在速度上超出R很多 : 基本上SAS是 : data new; : set old; : by id; : %dosth; : run; : R就是 : new <- split(old,old$id) #这步没有进入速度比较
|
t******o 发帖数: 70 | 13 我有类似的经历。
我做genomics data,都是上g的data,R读数据基本上是考验耐心,而SAS都是几秒钟就
读进去。
曾经做multiple imputation,对一个比较大的数据impute missing value。
R的code就很短的三五行,结果运行时间估计是20小时。
同事做计算机的,写了满满一页perl code来实现。写code花了半个小时,运行不到三
分钟。
R的有点在于有很多现成的统计函数和模块,但data manipulation上速度确实比SAS慢
很多,更不用说perl,C++之类的
【在 h***t 的大作中提到】 : 你R code写的不efficient当然跑的慢。
|
L*****k 发帖数: 327 | 14 python/perl/matlab/etc,都会比R显著的快
statcompute
【在 D******n 的大作中提到】 : 这个就是linux下面的R跟SAS比, : python也是我现在想到的东西,不知道是否给R快。我对python不熟,可能statcompute : 可以回答这个问题。 : : optimization
|
s*********e 发帖数: 1051 | 15 try data.table package. |
q**j 发帖数: 10612 | 16 请问你们上g的数据一般存在哪里?另外perl和python比,哪个速度快,还是差不多?
【在 t******o 的大作中提到】 : 我有类似的经历。 : 我做genomics data,都是上g的data,R读数据基本上是考验耐心,而SAS都是几秒钟就 : 读进去。 : 曾经做multiple imputation,对一个比较大的数据impute missing value。 : R的code就很短的三五行,结果运行时间估计是20小时。 : 同事做计算机的,写了满满一页perl code来实现。写code花了半个小时,运行不到三 : 分钟。 : R的有点在于有很多现成的统计函数和模块,但data manipulation上速度确实比SAS慢 : 很多,更不用说perl,C++之类的
|
q**j 发帖数: 10612 | 17 能讲讲这个能加快R多少,如何加快的?多谢。另外python做optimization有没有好的
package?多谢。
【在 s*********e 的大作中提到】 : try data.table package.
|
s*********e 发帖数: 1051 | 18 看情况。SQLite 的portability 好,但是hdf5的读取速度快。
【在 q**j 的大作中提到】 : 请问你们上g的数据一般存在哪里?另外perl和python比,哪个速度快,还是差不多?
|
D******n 发帖数: 2836 | 19 刚试了一下perl,
running time , R:Perl:SAS = 21 : 3.4: 1
perl比R快多了,主要原因可能还是由于R没有pass by reference的机制。function都
是把parameter copy 一次,所以速度就慢很多。
同是解释语言,perl等就有pass by reference的机制,不知道为啥R没有,这简直就是
一个大缺陷。
【在 L*****k 的大作中提到】 : python/perl/matlab/etc,都会比R显著的快 : : statcompute
|
q**j 发帖数: 10612 | 20 sas 的背后是什么语言,为什么这么快?不会是汇编吧。
【在 D******n 的大作中提到】 : 刚试了一下perl, : running time , R:Perl:SAS = 21 : 3.4: 1 : perl比R快多了,主要原因可能还是由于R没有pass by reference的机制。function都 : 是把parameter copy 一次,所以速度就慢很多。 : 同是解释语言,perl等就有pass by reference的机制,不知道为啥R没有,这简直就是 : 一个大缺陷。
|
|
|
s*r 发帖数: 2757 | |
s*********e 发帖数: 1051 | 22 > n <- 1000000
> set.seed(2013)
> ldf <- data.frame(id1 = sample(n, n), id2 = sample(n / 100, n, replace =
TRUE), x1 = rnorm(n), x2 = runif(n))
> rdf <- data.frame(id1 = sample(n, n), id2 = sample(n / 100, n, replace =
TRUE), y1 = rnorm(n), y2 = runif(n))
>
> # METHOD 1: MERGE
> system.time(join1 <- merge(ldf, rdf, by = c("id1", "id2")))
user system elapsed
54.028 11.229 65.673
>
> # METHOD 2: PLYR
> # library(plyr)
> # system.time(join2 <- plyr::join(ldf, rdf, by = c("id1", "id2"), type = "
inner"))
>
> # METHOD 3: SQLDF
> system.time(join3 <- sqldf::sqldf("select * from ldf inner join rdf on ldf
.id1 = rdf.id1 and ldf.id2 = rdf.id2"))
user system elapsed
101.522 117.319 225.579
>
> # METHOD 4: DATA.TABLE
> ldt <- data.table::data.table(ldf, key = c("id1", "id2"))
> rdt <- data.table::data.table(rdf, key = c("id1", "id2"))
> system.time(join4 <- merge(ldt, rdt, by = c("id1", "id2")))
user system elapsed
0.5 0.0 0.5
>
> # METHOD 5: FF
> lff <- ff::as.ffdf(ldf)
> rff <- ff::as.ffdf(rdf)
> system.time(join5 <- merge(lff, rff, by = c("id1", "id2")))
user system elapsed
50.879 5.552 56.868
【在 q**j 的大作中提到】 : 能讲讲这个能加快R多少,如何加快的?多谢。另外python做optimization有没有好的 : package?多谢。
|
h***x 发帖数: 586 | 23 据说是C
【在 q**j 的大作中提到】 : sas 的背后是什么语言,为什么这么快?不会是汇编吧。
|
r***v 发帖数: 12658 | 24 最开始是FORTRAN,然后用C改写了一遍
【在 q**j 的大作中提到】 : sas 的背后是什么语言,为什么这么快?不会是汇编吧。
|
b********m 发帖数: 65 | 25 所有Script语言速度都差不太多,除非用了傻X package.
Scipy.optimization under python!
【在 q**j 的大作中提到】 : 能讲讲这个能加快R多少,如何加快的?多谢。另外python做optimization有没有好的 : package?多谢。
|
t******g 发帖数: 372 | 26 有倒是有,与速度提升不大,多是出于内存考量
简单的可以pass enviroment, 复杂的需要写oop了
【在 D******n 的大作中提到】 : 刚试了一下perl, : running time , R:Perl:SAS = 21 : 3.4: 1 : perl比R快多了,主要原因可能还是由于R没有pass by reference的机制。function都 : 是把parameter copy 一次,所以速度就慢很多。 : 同是解释语言,perl等就有pass by reference的机制,不知道为啥R没有,这简直就是 : 一个大缺陷。
|
t****a 发帖数: 1212 | 27 R在运行效率上是有很多坑,不小心就掉进去了。关于R的并行计算以及大数据操作可以
参考
http://cran.r-project.org/web/views/HighPerformanceComputing.ht
R是免费的,SAS是要付钱的。R是一种语言,SAS就是个tool。总得有几个亮点,否则谁
用阿?
---------------------------
某种程度上说,R是给程序员用的,SAS是给统计师用的,客户不一样。
R有众多的第三方包,有最新的东西,这点SAS完全比不上,SAS就是个古董。
R和linux其他工具整合的很好。如果觉得它不够快,那么推荐配合其他工具一起使用。
1. 小数据直接用R
2. 中等规模数据用awk, python之类配合R
3. 大规模数据用hadoop cluster配合R streaming
在我的工作中,通常处理大规模数据,做aggregation的是其他语言,R是最后一步。
------------------------
既然知道R没有pass by reference,为什么还要传那么多大变量呢?用全局或者可以访
问的局部变量不就可以了么。
【在 D******n 的大作中提到】 : 做一个东西,分别用了R和SAS实现。 : R比较好写code,可是SAS在速度上超出R很多 : 基本上SAS是 : data new; : set old; : by id; : %dosth; : run; : R就是 : new <- split(old,old$id) #这步没有进入速度比较
|
q**j 发帖数: 10612 | 28 请问大中小数据的分界线如何?另外你说的R和python配合是如何配合?就是处理数据用
Python,run 统计model wiht R?
【在 t****a 的大作中提到】 : R在运行效率上是有很多坑,不小心就掉进去了。关于R的并行计算以及大数据操作可以 : 参考 : http://cran.r-project.org/web/views/HighPerformanceComputing.ht : R是免费的,SAS是要付钱的。R是一种语言,SAS就是个tool。总得有几个亮点,否则谁 : 用阿? : --------------------------- : 某种程度上说,R是给程序员用的,SAS是给统计师用的,客户不一样。 : R有众多的第三方包,有最新的东西,这点SAS完全比不上,SAS就是个古董。 : R和linux其他工具整合的很好。如果觉得它不够快,那么推荐配合其他工具一起使用。 : 1. 小数据直接用R
|
D******n 发帖数: 2836 | 29 Thanks for the link.
你说的都没错。问题如果你好不容易用R做出来个东西,还要痛苦的转到SAS,那真是折
腾。
只要R快一点或者SAS可以方便处理matrix,事情都会好办很多。
SAS的proc fcmp已经在向这方面努力
【在 t****a 的大作中提到】 : R在运行效率上是有很多坑,不小心就掉进去了。关于R的并行计算以及大数据操作可以 : 参考 : http://cran.r-project.org/web/views/HighPerformanceComputing.ht : R是免费的,SAS是要付钱的。R是一种语言,SAS就是个tool。总得有几个亮点,否则谁 : 用阿? : --------------------------- : 某种程度上说,R是给程序员用的,SAS是给统计师用的,客户不一样。 : R有众多的第三方包,有最新的东西,这点SAS完全比不上,SAS就是个古董。 : R和linux其他工具整合的很好。如果觉得它不够快,那么推荐配合其他工具一起使用。 : 1. 小数据直接用R
|
n*****n 发帖数: 3123 | |
|
|
T***y 发帖数: 43 | 31 尺有所短,寸有所长。
大家都是出来跑江湖的,没有几把刷子早就被市场淘汰了 |
o****o 发帖数: 8077 | 32 I am thinking of compiling R math functions and wrap them into SAS using
PROC FCMP.
Interested?
【在 D******n 的大作中提到】 : Thanks for the link. : 你说的都没错。问题如果你好不容易用R做出来个东西,还要痛苦的转到SAS,那真是折 : 腾。 : 只要R快一点或者SAS可以方便处理matrix,事情都会好办很多。 : SAS的proc fcmp已经在向这方面努力
|
t****a 发帖数: 1212 | 33 不用特殊的包,R需要把数据读进内存才能操作,而且很多函数会生成新object,很容
易把内存耗尽。
内存有8G的话,1G以下的数据R可以搞定。
中等数据就是若干G,一般10G以内的那种,用python awk的优点是无需读入内存,速度
还可以忍受。
数据超过10G甚至更大,个人感觉应该用hadoop来做。前提是算法本身要可以被
partition成小块并行处理。这个时候可以随便用什么语言来streaming,如果你不喜欢
java的话。
据用
【在 q**j 的大作中提到】 : 请问大中小数据的分界线如何?另外你说的R和python配合是如何配合?就是处理数据用 : Python,run 统计model wiht R?
|
n*****3 发帖数: 1584 | 34 10G 用hadoop ? overkilled I think;
add memory.....
hadoop is NOT free, more PCs cost lost more than memory.
【在 t****a 的大作中提到】 : 不用特殊的包,R需要把数据读进内存才能操作,而且很多函数会生成新object,很容 : 易把内存耗尽。 : 内存有8G的话,1G以下的数据R可以搞定。 : 中等数据就是若干G,一般10G以内的那种,用python awk的优点是无需读入内存,速度 : 还可以忍受。 : 数据超过10G甚至更大,个人感觉应该用hadoop来做。前提是算法本身要可以被 : partition成小块并行处理。这个时候可以随便用什么语言来streaming,如果你不喜欢 : java的话。 : : 据用
|
t****a 发帖数: 1212 | 35 今天有10G业务数据,明天就有20G,30G,该未雨绸缪早点做好准备。
内存不能无限量加下去,而且数据很大的时候主要瓶颈在磁盘IO,加内存最多把问题从
不能做变成能做,而不能把解决问题的速度加快。
关于机器的成本...,用EMR阿,租用PC,按小时收费的,small instance一小时$0.02
划算的很,我们的时间比什么都值钱。
【在 n*****3 的大作中提到】 : 10G 用hadoop ? overkilled I think; : add memory..... : hadoop is NOT free, more PCs cost lost more than memory.
|
l*********s 发帖数: 5409 | 36 Yeah, that is confusing. But you could use SAS to evaluate R's results,
assuming SAS is 100% correct(a big leap of faith)
package
【在 R********n 的大作中提到】 : R除了速度显著慢之外,还有的问题就是可靠性。同一个算法/模型,通常很多package : 实现,但是互相之间结果不总是一致,并且也不知道这种开源包到底实现得对不对 : 整体感觉学术界用来玩玩R还好,业界如果用R的话,只适合一些要求不高的场合
|
D**u 发帖数: 288 | 37 可是不是所有任务都可以 partition 到 hadoop 中去
02
【在 t****a 的大作中提到】 : 今天有10G业务数据,明天就有20G,30G,该未雨绸缪早点做好准备。 : 内存不能无限量加下去,而且数据很大的时候主要瓶颈在磁盘IO,加内存最多把问题从 : 不能做变成能做,而不能把解决问题的速度加快。 : 关于机器的成本...,用EMR阿,租用PC,按小时收费的,small instance一小时$0.02 : 划算的很,我们的时间比什么都值钱。
|
o****o 发帖数: 8077 | 38 分析的规模不管要看字节数,还要看实际运算,10G的数据是大,不过如果只有几列实
数变量,求个描述统计量,线性回归啥的也不会多头疼,用SAS妥妥的,那需要HADOOP
啊;但是如果是上万列实数变量,这个就难办了。
【在 t****a 的大作中提到】 : 不用特殊的包,R需要把数据读进内存才能操作,而且很多函数会生成新object,很容 : 易把内存耗尽。 : 内存有8G的话,1G以下的数据R可以搞定。 : 中等数据就是若干G,一般10G以内的那种,用python awk的优点是无需读入内存,速度 : 还可以忍受。 : 数据超过10G甚至更大,个人感觉应该用hadoop来做。前提是算法本身要可以被 : partition成小块并行处理。这个时候可以随便用什么语言来streaming,如果你不喜欢 : java的话。 : : 据用
|
S******y 发帖数: 1123 | 39 Not all 任务可以 partition 到 hadoop 中去
-------------
Regarding R, you can optimize loading of csv file to make read-in faster...
On data size, my experience is that when data size surpasses ~20 GB, my 64
bit R running on a Linux box with lots of memory starts to sputter.
But SAS is not fast either when reading/writing 20 GB or 30 GB SAS data file
with single I/O...
【在 D**u 的大作中提到】 : 可是不是所有任务都可以 partition 到 hadoop 中去 : : 02
|
t****a 发帖数: 1212 | 40 干一件事的话,求个描述统计量也不用SAS ... 一行awk就搞定了。说hadoop是从处理
速度和吞吐量来考虑的。
真心不想被commercial的软件给困住,况且就我这个半个developer所看到的,SAS的能
力实在太有限了。
还是那句话,术业有专攻... 软件也是一样,本来用户就不是一样的。
HADOOP
【在 o****o 的大作中提到】 : 分析的规模不管要看字节数,还要看实际运算,10G的数据是大,不过如果只有几列实 : 数变量,求个描述统计量,线性回归啥的也不会多头疼,用SAS妥妥的,那需要HADOOP : 啊;但是如果是上万列实数变量,这个就难办了。
|
|
|
o****o 发帖数: 8077 | 41 give some examples that SAS can't do in typical data analysis, so that I can
get prepared when I encounter them in the future. Due to limited experience
, SAS is sufficient for me so far, I think more diffcult will come from IT
related stuffs.
I know in many cases, it is tedious to write many lines of SAS code to just
finish one thing that is so simple to accomplish in a matrix based script
language, so I am looking for more and newer cases.
【在 t****a 的大作中提到】 : 干一件事的话,求个描述统计量也不用SAS ... 一行awk就搞定了。说hadoop是从处理 : 速度和吞吐量来考虑的。 : 真心不想被commercial的软件给困住,况且就我这个半个developer所看到的,SAS的能 : 力实在太有限了。 : 还是那句话,术业有专攻... 软件也是一样,本来用户就不是一样的。 : : HADOOP
|
c*******o 发帖数: 8869 | 42 but think about a scenario where you want to open a software as service
company that does data analysis for clients... It is not a good idea to use
SAS as your backend computing engine.
When you are small, SAS will charge you license which is not too bad...
when you grow bigger, SAS will change the licensing price and even ban you
from doing so....
can
experience
just
【在 o****o 的大作中提到】 : give some examples that SAS can't do in typical data analysis, so that I can : get prepared when I encounter them in the future. Due to limited experience : , SAS is sufficient for me so far, I think more diffcult will come from IT : related stuffs. : I know in many cases, it is tedious to write many lines of SAS code to just : finish one thing that is so simple to accomplish in a matrix based script : language, so I am looking for more and newer cases.
|
c*******o 发帖数: 8869 | 43
many or most so called "第三方包" and "最新的东西" are just simple re-
packaging of a handful of basic modules that are pre-existing.....
【在 t****a 的大作中提到】 : 干一件事的话,求个描述统计量也不用SAS ... 一行awk就搞定了。说hadoop是从处理 : 速度和吞吐量来考虑的。 : 真心不想被commercial的软件给困住,况且就我这个半个developer所看到的,SAS的能 : 力实在太有限了。 : 还是那句话,术业有专攻... 软件也是一样,本来用户就不是一样的。 : : HADOOP
|
w********m 发帖数: 1137 | 44 不要用R做行操作
象R,Matlab,SAS/IML这类的矩阵语言默认的数据结构是matrix,处理数据是column
processing。反之,SAS,Perl,Python这类的脚本语言处理数据是row processing。
用它们行操作比如读外部数据,前者的复杂度是O(n^2),后者是O(n)。对较大的数据来
说,效率不能同日而语。
R最好有个脚本语言做前台,比如python。
个人觉得比较好的做法是先把数据load进database |
s*********e 发帖数: 1051 | 45 right on
【在 w********m 的大作中提到】 : 不要用R做行操作 : 象R,Matlab,SAS/IML这类的矩阵语言默认的数据结构是matrix,处理数据是column : processing。反之,SAS,Perl,Python这类的脚本语言处理数据是row processing。 : 用它们行操作比如读外部数据,前者的复杂度是O(n^2),后者是O(n)。对较大的数据来 : 说,效率不能同日而语。 : R最好有个脚本语言做前台,比如python。 : 个人觉得比较好的做法是先把数据load进database
|
q**j 发帖数: 10612 | 46 请问用Python做前台,R做后台具体是怎么做?用python吧数据整理好,call R去estim
ate?
【在 w********m 的大作中提到】 : 不要用R做行操作 : 象R,Matlab,SAS/IML这类的矩阵语言默认的数据结构是matrix,处理数据是column : processing。反之,SAS,Perl,Python这类的脚本语言处理数据是row processing。 : 用它们行操作比如读外部数据,前者的复杂度是O(n^2),后者是O(n)。对较大的数据来 : 说,效率不能同日而语。 : R最好有个脚本语言做前台,比如python。 : 个人觉得比较好的做法是先把数据load进database
|
w********m 发帖数: 1137 | 47 前一段时间听Wickham Hadley大侠的观点是,统计编程的未来在web,应该跟web
development一样进行分层架构。
数据层Python操作和变形数据。
逻辑层R做统计模型。
表现层JavaScript实现数据在web的互动和可视化。
如果他的想法真能在RStudio实现,统计的境界可能就不一样了。
estim
【在 q**j 的大作中提到】 : 请问用Python做前台,R做后台具体是怎么做?用python吧数据整理好,call R去estim : ate?
|
D******n 发帖数: 2836 | 48 too many,
Basically whenever u have to do sth across records and/or column-wise
processing.
Not neccesarrily IT, think about trade lines, or claims. One person can have
mutliple
trade lines or claims.
can
experience
just
【在 o****o 的大作中提到】 : give some examples that SAS can't do in typical data analysis, so that I can : get prepared when I encounter them in the future. Due to limited experience : , SAS is sufficient for me so far, I think more diffcult will come from IT : related stuffs. : I know in many cases, it is tedious to write many lines of SAS code to just : finish one thing that is so simple to accomplish in a matrix based script : language, so I am looking for more and newer cases.
|
q**j 发帖数: 10612 | 49 有两个问题。
第一个就是有没有让r和python接口的程序推荐?
第二个比较具体。如果有一个python loop。每loop一次叫r一次。如果loop几千回,就
要start and shutdown r几千回。这样是不是很费时间?如何解决?
【在 w********m 的大作中提到】 : 前一段时间听Wickham Hadley大侠的观点是,统计编程的未来在web,应该跟web : development一样进行分层架构。 : 数据层Python操作和变形数据。 : 逻辑层R做统计模型。 : 表现层JavaScript实现数据在web的互动和可视化。 : 如果他的想法真能在RStudio实现,统计的境界可能就不一样了。 : : estim
|
s*********e 发帖数: 1051 | 50 check pyper for 1.
nonsense for 2.
【在 q**j 的大作中提到】 : 有两个问题。 : 第一个就是有没有让r和python接口的程序推荐? : 第二个比较具体。如果有一个python loop。每loop一次叫r一次。如果loop几千回,就 : 要start and shutdown r几千回。这样是不是很费时间?如何解决?
|
|
|
o****o 发帖数: 8077 | 51 thanks, this is good point.
use
【在 c*******o 的大作中提到】 : but think about a scenario where you want to open a software as service : company that does data analysis for clients... It is not a good idea to use : SAS as your backend computing engine. : When you are small, SAS will charge you license which is not too bad... : when you grow bigger, SAS will change the licensing price and even ban you : from doing so.... : : can : experience : just
|
s*********e 发帖数: 1051 | 52 发现和你想法很一致呀
【在 w********m 的大作中提到】 : 前一段时间听Wickham Hadley大侠的观点是,统计编程的未来在web,应该跟web : development一样进行分层架构。 : 数据层Python操作和变形数据。 : 逻辑层R做统计模型。 : 表现层JavaScript实现数据在web的互动和可视化。 : 如果他的想法真能在RStudio实现,统计的境界可能就不一样了。 : : estim
|
o****o 发帖数: 8077 | 53 I think I can handle operation cross rows in SAS without much difficulties
so far.
Basically I treat it as a big table, no matter it resides in memory or on
table, and access by pointer or index.
some new tools in SAS makes this less a problem nowadays comparing to v8 era.
Can you give me a specific example, maybe I didn't encounter such.
have
【在 D******n 的大作中提到】 : too many, : Basically whenever u have to do sth across records and/or column-wise : processing. : Not neccesarrily IT, think about trade lines, or claims. One person can have : mutliple : trade lines or claims. : : can : experience : just
|
q**j 发帖数: 10612 | 54 多谢。pyper只叫一次r,然后每次都是用这个session?我以前用sas call matlab。有
这个问题,openning matlab is quite slow.
【在 s*********e 的大作中提到】 : check pyper for 1. : nonsense for 2.
|
s*********e 发帖数: 1051 | 55 yes
or you might use rpy2 to use R function directly within python instead of
calling R function as in pyper.
since pyper uses pipe to exchange data between r and python, the speed is
slower.
http://statcompute.wordpress.com/2012/12/12/another-comments-ab
http://statcompute.wordpress.com/2012/12/10/a-brief-comparison-
【在 q**j 的大作中提到】 : 多谢。pyper只叫一次r,然后每次都是用这个session?我以前用sas call matlab。有 : 这个问题,openning matlab is quite slow.
|
q**j 发帖数: 10612 | 56 多谢。我这两天就会在工作上用到。到时候再请教。
【在 s*********e 的大作中提到】 : yes : or you might use rpy2 to use R function directly within python instead of : calling R function as in pyper. : since pyper uses pipe to exchange data between r and python, the speed is : slower. : http://statcompute.wordpress.com/2012/12/12/another-comments-ab : http://statcompute.wordpress.com/2012/12/10/a-brief-comparison-
|
l*********s 发帖数: 5409 | 57 vote for excel. Easy to use, good graphics, installed everywhere. It covers
at least 75% of user cases. |
c******s 发帖数: 18 | 58 太强大了
covers
【在 l*********s 的大作中提到】 : vote for excel. Easy to use, good graphics, installed everywhere. It covers : at least 75% of user cases.
|
c******s 发帖数: 18 | 59 O 用javascript。太好了
【在 w********m 的大作中提到】 : 前一段时间听Wickham Hadley大侠的观点是,统计编程的未来在web,应该跟web : development一样进行分层架构。 : 数据层Python操作和变形数据。 : 逻辑层R做统计模型。 : 表现层JavaScript实现数据在web的互动和可视化。 : 如果他的想法真能在RStudio实现,统计的境界可能就不一样了。 : : estim
|
t******g 发帖数: 372 | 60 常用的分析这个不难实现啊, 至少拿cgi+r折腾很常见
觉得这个和rstudio这种ide的目的不相符, 倒是更接近他们搞的shany这种
【在 w********m 的大作中提到】 : 前一段时间听Wickham Hadley大侠的观点是,统计编程的未来在web,应该跟web : development一样进行分层架构。 : 数据层Python操作和变形数据。 : 逻辑层R做统计模型。 : 表现层JavaScript实现数据在web的互动和可视化。 : 如果他的想法真能在RStudio实现,统计的境界可能就不一样了。 : : estim
|
|
|
n*****3 发帖数: 1584 | 61 can 数据层 use JavaScript too?
Nobody wants to learn three language to start some analysis.
【在 t******g 的大作中提到】 : 常用的分析这个不难实现啊, 至少拿cgi+r折腾很常见 : 觉得这个和rstudio这种ide的目的不相符, 倒是更接近他们搞的shany这种
|
D******n 发帖数: 2836 | 62 id x1 x2 x3 ....
1 2 3 4 ,...
1 3 4 5
1 2 3 4
2 2 2 2
2 2 2 2
3 1 2 4
...
then for each id,u do sth on the "x1 x2 x3, ..." matrix
number of records for each id is variable..., sometimes u even need to
transpose the matrix
does proc fcmp take a matrix as input now?
era.
【在 o****o 的大作中提到】 : I think I can handle operation cross rows in SAS without much difficulties : so far. : Basically I treat it as a big table, no matter it resides in memory or on : table, and access by pointer or index. : some new tools in SAS makes this less a problem nowadays comparing to v8 era. : Can you give me a specific example, maybe I didn't encounter such. : : have
|
w********m 发帖数: 1137 | 63 我同意你。web做开发都是两种语言,前台比如JS,后台比如Java或C#。学统计的如果
做开发用三种语言太过分了。事实上也没有这样的人才。
这几年Python本身也在走下坡路。JavaScrip的V8虚拟机理论上跟python效率差不多,
做数据处理潜力大。有趣的是,R和Javascript语法很相似。从R过度到JS没有什么大的
curve。
Node.js方面,不知道现在有没有在开发比较强的data management的framework. 如果
有的话,窃以为以后的架构就是JS-R-JS。
【在 n*****3 的大作中提到】 : can 数据层 use JavaScript too? : Nobody wants to learn three language to start some analysis.
|
x*******i 发帖数: 1791 | 64 我基本上是SAS和R混搭。把R放在SAS里用。觉得效果不错。基本上成为一个数据处理系
统。 |
p*****1 发帖数: 330 | 65 能不能把C++ 和R 联用?这样是否会提高效率?
【在 t****a 的大作中提到】 : R在运行效率上是有很多坑,不小心就掉进去了。关于R的并行计算以及大数据操作可以 : 参考 : http://cran.r-project.org/web/views/HighPerformanceComputing.ht : R是免费的,SAS是要付钱的。R是一种语言,SAS就是个tool。总得有几个亮点,否则谁 : 用阿? : --------------------------- : 某种程度上说,R是给程序员用的,SAS是给统计师用的,客户不一样。 : R有众多的第三方包,有最新的东西,这点SAS完全比不上,SAS就是个古董。 : R和linux其他工具整合的很好。如果觉得它不够快,那么推荐配合其他工具一起使用。 : 1. 小数据直接用R
|
o**m 发帖数: 828 | 66 rcpp
【在 p*****1 的大作中提到】 : 能不能把C++ 和R 联用?这样是否会提高效率?
|
n*****3 发帖数: 1584 | 67 不好用; R is written in c.
【在 o**m 的大作中提到】 : rcpp
|
s******8 发帖数: 102 | 68 我们单位一牛人,R用的倍流,建议我们大老板用R跑我们的Model,说应该比SAS更快。
因此大老板鼓励 SAS Programmers学习一下R。我这刚准备学R. |
B******5 发帖数: 4676 | 69 咋不好用了?觉得很方便
【在 n*****3 的大作中提到】 : 不好用; R is written in c.
|
n*****3 发帖数: 1584 | 70 for very small chunk computational extensive code, it is OK.
But how to debug it? especially no so small project?
even In pure c++/STL, is was hard to debug STL container. except under VC
studio
【在 B******5 的大作中提到】 : 咋不好用了?觉得很方便
|
|
|
t****a 发帖数: 1212 | 71 如楼上所说,你可以用Rcpp去为专门某个任务去写一个应用来解决特定的问题。
【在 p*****1 的大作中提到】 : 能不能把C++ 和R 联用?这样是否会提高效率?
|
t****a 发帖数: 1212 | 72 V8的速度比python快10-50倍。
不太懂javascript,不过觉得这语言看着就不适合做数据分析,缺的太多了:REPL,
vector运算,各种package,调试环境。
Ross Ihaka曾预言下一个R会build在lisp上,很难说他说的是不是对的,但我倾向于相
信下一个统计计算平台会采用functional programming language作为基础,采用交互
式的dynamic型语言,并提供交互的REPL。(这就是LISP阿!)
现在是数据分析领域黎明前的黑暗,大数据,并行计算,客户端从单机变成浏览器,交
互式的data visualization,分析code和production code之间的gap...要解决的问题
有无数。open source领域缺乏统一的系统,大家不得不学习各种
知识来搭建自己的平台。
这是个变迁的时代,是挑战,也是每个人的机遇。
commercial的东西...绝对不想碰,没有改造的前途。
我们拭目以待吧!
【在 w********m 的大作中提到】 : 我同意你。web做开发都是两种语言,前台比如JS,后台比如Java或C#。学统计的如果 : 做开发用三种语言太过分了。事实上也没有这样的人才。 : 这几年Python本身也在走下坡路。JavaScrip的V8虚拟机理论上跟python效率差不多, : 做数据处理潜力大。有趣的是,R和Javascript语法很相似。从R过度到JS没有什么大的 : curve。 : Node.js方面,不知道现在有没有在开发比较强的data management的framework. 如果 : 有的话,窃以为以后的架构就是JS-R-JS。
|
B******5 发帖数: 4676 | 73 gdb可以debug的,STL debug确实恶心点。这不是rcpp的问题,是C++的问题。因噎废食了
【在 n*****3 的大作中提到】 : for very small chunk computational extensive code, it is OK. : But how to debug it? especially no so small project? : even In pure c++/STL, is was hard to debug STL container. except under VC : studio
|
q**j 发帖数: 10612 | 74 thanks a lot! would you talk a bit about rpy and rpy2? what are the
differences?
【在 s*********e 的大作中提到】 : yes : or you might use rpy2 to use R function directly within python instead of : calling R function as in pyper. : since pyper uses pipe to exchange data between r and python, the speed is : slower. : http://statcompute.wordpress.com/2012/12/12/another-comments-ab : http://statcompute.wordpress.com/2012/12/10/a-brief-comparison-
|
q**j 发帖数: 10612 | 75 我看了你的文章。像
r('r_mean <- colMeans(r_data)')
这样用一行还是可以。但是如果我的R里面有很多行,看起来会非常别扭。而且如果
colMeans是一个我自己的R 函数怎么办?
我以前用Matlab也有和R接口的办法,后来还是放弃了。选择output .csv,r input,
then
output another .csv as result。这样的途径。不知道这样会不会影响速度。如果数
据已经大概被Python处理好了,应该问题不太大吧。
【在 s*********e 的大作中提到】 : yes : or you might use rpy2 to use R function directly within python instead of : calling R function as in pyper. : since pyper uses pipe to exchange data between r and python, the speed is : slower. : http://statcompute.wordpress.com/2012/12/12/another-comments-ab : http://statcompute.wordpress.com/2012/12/10/a-brief-comparison-
|
q**j 发帖数: 10612 | 76 怎么混搭?用 x command 叫 r?
【在 x*******i 的大作中提到】 : 我基本上是SAS和R混搭。把R放在SAS里用。觉得效果不错。基本上成为一个数据处理系 : 统。
|
n*****3 发帖数: 1584 | 77 But Rccp extensivly use STL and template, both are bad when debugging.
when use C with R, no such issue.
As I said, some small trunk of computation extensive codes, rcpp is just
fine.
just my 2 cents.
食了
【在 B******5 的大作中提到】 : gdb可以debug的,STL debug确实恶心点。这不是rcpp的问题,是C++的问题。因噎废食了
|
s*********e 发帖数: 1051 | 78 to be honest, i don't understand your question. do you mind elaborating?
【在 q**j 的大作中提到】 : 我看了你的文章。像 : r('r_mean <- colMeans(r_data)') : 这样用一行还是可以。但是如果我的R里面有很多行,看起来会非常别扭。而且如果 : colMeans是一个我自己的R 函数怎么办? : 我以前用Matlab也有和R接口的办法,后来还是放弃了。选择output .csv,r input, : then : output another .csv as result。这样的途径。不知道这样会不会影响速度。如果数 : 据已经大概被Python处理好了,应该问题不太大吧。
|
B******5 发帖数: 4676 | 79 yeah, maybe you are right. Not sure how to define "small" here, perhaps
because I had no very big data experience.
【在 n*****3 的大作中提到】 : But Rccp extensivly use STL and template, both are bad when debugging. : when use C with R, no such issue. : As I said, some small trunk of computation extensive codes, rcpp is just : fine. : just my 2 cents. : : 食了
|
q**j 发帖数: 10612 | 80 其实也没什么。就是看了你的例子,感觉好好的R写成这样看着很费劲。怎么看怎么不爽
。这样用一两句还可以忍受,如果大段的code这样写就非常不爽。我想还是python有的
功能用python自己的,实在没有了才叫R吧。对了你的blog上面有有关scipy and numpy
的讨论么?
【在 s*********e 的大作中提到】 : to be honest, i don't understand your question. do you mind elaborating?
|
|
|
s*********e 发帖数: 1051 | 81 well, the stupid is as the stupid does.
不爽
numpy
【在 q**j 的大作中提到】 : 其实也没什么。就是看了你的例子,感觉好好的R写成这样看着很费劲。怎么看怎么不爽 : 。这样用一两句还可以忍受,如果大段的code这样写就非常不爽。我想还是python有的 : 功能用python自己的,实在没有了才叫R吧。对了你的blog上面有有关scipy and numpy : 的讨论么?
|
o****o 发帖数: 8077 | 82 still depends.
if you want to transpose x: within each ID, that would still be difficult in
R, isn't it?
【在 D******n 的大作中提到】 : id x1 x2 x3 .... : 1 2 3 4 ,... : 1 3 4 5 : 1 2 3 4 : 2 2 2 2 : 2 2 2 2 : 3 1 2 4 : ... : then for each id,u do sth on the "x1 x2 x3, ..." matrix : number of records for each id is variable..., sometimes u even need to
|
t****a 发帖数: 1212 | 83 try d?ply in plyr package by hadley wichkam.
in
【在 o****o 的大作中提到】 : still depends. : if you want to transpose x: within each ID, that would still be difficult in : R, isn't it?
|
D******n 发帖数: 2836 | 84 well in R, i will transform this data structure into a list
newdata <- split(old_data,old_data$id)
in
【在 o****o 的大作中提到】 : still depends. : if you want to transpose x: within each ID, that would still be difficult in : R, isn't it?
|
o****o 发帖数: 8077 | 85 given another specific example that SAS has difficulty to do but easy for R
(using base R functions)
【在 D******n 的大作中提到】 : well in R, i will transform this data structure into a list : newdata <- split(old_data,old_data$id) : : in
|
o****o 发帖数: 8077 | 86 here is a SAS questions someone asked:
Given a symmetric matrix A (NxN), the value of each cell is some integer
number, for each row (with row ID=1 to N), he wants to count which other
rows in A contains a number equals to the row ID.
For example, for row=4, this guy wants to find out in row [-4,:], which ones
also contains a value=4 in their rows [, 1:N].
In SAS, typically you will transpose it to a vector, and output only those
rows=ID. Or you can sweep each row from diagonal term to the end and output
any column number that has a value falls into [1, N], then sort.
Given my R skill level, this is also the way I would do in R, but it
consumes a lot of resources, especially looping over rows, any more neat
technique ?
x<-matrix(rpois(10^2, 10), ncol=10)
xx<-floor(t(x)%*%x/100)
func<-function(vec) (1:length(vec))[vec<=length(vec)]
apply(xx, 1, func)
【在 D******n 的大作中提到】 : well in R, i will transform this data structure into a list : newdata <- split(old_data,old_data$id) : : in
|