d*a
2 楼
比如dplyr,允许进行SQL 类的操作
但是对于字段名,直接要给出
比如
df_ret=df %>% group_by(name, work_year)) %>% summarise ...
这里,name 和 work_year都是字段名
在其他语言里,字段名需要引号,dplyr不用,实际是不能用,你用了还不行
但是假如我写了个过程,参数(f1)将作为字段名,就没法这么用了。google的结果,是
group_by 要改成 group_by_
library(dplyr)
get_f1 = function(f1, df){
df_ret=df %>% group_by_(.dots=c(f1, 'work_year')) %>% summarise ...
return(df_ret)
}
我猜,最初版本没有group_by_, 有人提出了,没法在原有框架满足,才新加的。其实
最初的版本要求字段名用引号比什么都强
但是对于字段名,直接要给出
比如
df_ret=df %>% group_by(name, work_year)) %>% summarise ...
这里,name 和 work_year都是字段名
在其他语言里,字段名需要引号,dplyr不用,实际是不能用,你用了还不行
但是假如我写了个过程,参数(f1)将作为字段名,就没法这么用了。google的结果,是
group_by 要改成 group_by_
library(dplyr)
get_f1 = function(f1, df){
df_ret=df %>% group_by_(.dots=c(f1, 'work_year')) %>% summarise ...
return(df_ret)
}
我猜,最初版本没有group_by_, 有人提出了,没法在原有框架满足,才新加的。其实
最初的版本要求字段名用引号比什么都强
w*m
4 楼
这个算是stackoverflow oriented programming吧。
用个hash table就能解决的问题,改用dsl解决,比较不爽。
用个hash table就能解决的问题,改用dsl解决,比较不爽。
w*y
5 楼
哦 那可以他随便爬么? 因为他一边爬一边哭嗥,我看着怪不合适的, 想起marley
and me,怕怕呀。。。。。
and me,怕怕呀。。。。。
m*n
6 楼
你终于肯承认R的毛病啦
d*c
8 楼
应该不是group_by自己的问题,而是R传统里很多地方有把名字直接用不加引号的习惯
,然后要用变量的时候肯定得用个不同语法。
如果说直接用的case有80%,那算是为了这80%的方便,把剩下的20%搞的费劲一些。如
果你用其他情况实际更多,那就麻烦更多一些。
传统R里有时用quote/get那一套来解决,依靠non-standard evaluation,那个更麻烦
,也容易出问题
http://adv-r.had.co.nz/Computing-on-the-language.html
dplyr用不同的函数,算是另一种路子。
data.table里也是,如果要用一个变量来代表要用的列名,有很多绕的地方。
【在 d******a 的大作中提到】
: 比如dplyr,允许进行SQL 类的操作
: 但是对于字段名,直接要给出
: 比如
: df_ret=df %>% group_by(name, work_year)) %>% summarise ...
: 这里,name 和 work_year都是字段名
: 在其他语言里,字段名需要引号,dplyr不用,实际是不能用,你用了还不行
: 但是假如我写了个过程,参数(f1)将作为字段名,就没法这么用了。google的结果,是
: group_by 要改成 group_by_
: library(dplyr)
: get_f1 = function(f1, df){
,然后要用变量的时候肯定得用个不同语法。
如果说直接用的case有80%,那算是为了这80%的方便,把剩下的20%搞的费劲一些。如
果你用其他情况实际更多,那就麻烦更多一些。
传统R里有时用quote/get那一套来解决,依靠non-standard evaluation,那个更麻烦
,也容易出问题
http://adv-r.had.co.nz/Computing-on-the-language.html
dplyr用不同的函数,算是另一种路子。
data.table里也是,如果要用一个变量来代表要用的列名,有很多绕的地方。
【在 d******a 的大作中提到】
: 比如dplyr,允许进行SQL 类的操作
: 但是对于字段名,直接要给出
: 比如
: df_ret=df %>% group_by(name, work_year)) %>% summarise ...
: 这里,name 和 work_year都是字段名
: 在其他语言里,字段名需要引号,dplyr不用,实际是不能用,你用了还不行
: 但是假如我写了个过程,参数(f1)将作为字段名,就没法这么用了。google的结果,是
: group_by 要改成 group_by_
: library(dplyr)
: get_f1 = function(f1, df){
w*y
11 楼
我就是不知道怎么stop他,我说no, ahahaha,或者把他抱走,都不灵。 他对各式玩
具也都兴趣不大,很执着的要去爬。。。。
具也都兴趣不大,很执着的要去爬。。。。
m*r
14 楼
R的问题既不是‘灵活性’, 也不是‘随意性‘, 而是‘历史局限性’和‘手工作坊
’特性。
灵活性是褒义词,一个东西可以这么玩,也可以那么玩。 R是整相反。 一个变量用
group_by, 两个变量用group_by_, 混合变量没准再想另外个法子。
‘手工作坊’特性不难理解,hadley wickham 写dplyr, max写caret, julia写
textmining, mat写data.table,各有各的写法。 几个大厨做的饭,非把他放在一起吃
,不知道是个什么味儿。
‘历史局限性‘说的是R本来是处理函数的语言, 而不是处理数据的语言,主要是这个
戴耳环的新西兰人hadly wickham花了好几年功夫写dplyr, plyr专门让它处理数据。
这里面目的性也很强,首先,一般人不会搞什么算法,也不会和函数打交道,所以也没
必要用R. 大部分人还是先要和数据打交道,既然wickham 为rstudio工作,那么增强R
处理数据的功能,是打开市场的好办法。
第二,把一个专门处理函数的语言折腾成一个能处理数据的语言, 本来就不容易, 没
想wichham野心更大,既要满足市场部大妈写类似sql的需要,又要满足楼主和我这样高
端编程人才的需要,所以dplyr这款产品就是四不像,居然能想出group_by 和group_by
_ 这种写法来区分标准计算(standard evaluation ) 和非标准计算(NSE)。
回到楼主的问题, wickham原本设计dplyr就没有想到楼主吃饱撑的会这么用(按我说
这是极其普遍的用法,把两个factor串起来么,正常人都想得到),2014年一月在
stackoverflow回答别人问题时说 我要增加这么个功能,语法大概这样,不过请你们等
一等啊【2】。 可笑的是到了2017年 wichham 联合我上面提到的几个大厨推出所谓
tidyverse, 声明SE是'肤浅的'(superfluous), 没必要的, 要降级使用deprecate。
[1]
这就好比楼主要买一辆车,既可以买车场造的车(商业软件),也可以买wickham在后
院改装的车, 改装车不要钱啊,而且wickham还宣称他的改装车既可以用来买菜,又能
飙车;既有摩托车的灵活性,随意性,又有豪华车的各种配置, 函数式编程,不可变
状态, etc; 既有标准操作,又有非标准操作。 现在看来还有降级使用的标准操作。
不管你信不信, 我是信了。
[1]https://dplyr.tidyverse.org/reference/se-deprecated.html
[2]https://stackoverflow.com/questions/21208801/group-by-multiple-columns-in
-dplyr-using-string-vector-input/
’特性。
灵活性是褒义词,一个东西可以这么玩,也可以那么玩。 R是整相反。 一个变量用
group_by, 两个变量用group_by_, 混合变量没准再想另外个法子。
‘手工作坊’特性不难理解,hadley wickham 写dplyr, max写caret, julia写
textmining, mat写data.table,各有各的写法。 几个大厨做的饭,非把他放在一起吃
,不知道是个什么味儿。
‘历史局限性‘说的是R本来是处理函数的语言, 而不是处理数据的语言,主要是这个
戴耳环的新西兰人hadly wickham花了好几年功夫写dplyr, plyr专门让它处理数据。
这里面目的性也很强,首先,一般人不会搞什么算法,也不会和函数打交道,所以也没
必要用R. 大部分人还是先要和数据打交道,既然wickham 为rstudio工作,那么增强R
处理数据的功能,是打开市场的好办法。
第二,把一个专门处理函数的语言折腾成一个能处理数据的语言, 本来就不容易, 没
想wichham野心更大,既要满足市场部大妈写类似sql的需要,又要满足楼主和我这样高
端编程人才的需要,所以dplyr这款产品就是四不像,居然能想出group_by 和group_by
_ 这种写法来区分标准计算(standard evaluation ) 和非标准计算(NSE)。
回到楼主的问题, wickham原本设计dplyr就没有想到楼主吃饱撑的会这么用(按我说
这是极其普遍的用法,把两个factor串起来么,正常人都想得到),2014年一月在
stackoverflow回答别人问题时说 我要增加这么个功能,语法大概这样,不过请你们等
一等啊【2】。 可笑的是到了2017年 wichham 联合我上面提到的几个大厨推出所谓
tidyverse, 声明SE是'肤浅的'(superfluous), 没必要的, 要降级使用deprecate。
[1]
这就好比楼主要买一辆车,既可以买车场造的车(商业软件),也可以买wickham在后
院改装的车, 改装车不要钱啊,而且wickham还宣称他的改装车既可以用来买菜,又能
飙车;既有摩托车的灵活性,随意性,又有豪华车的各种配置, 函数式编程,不可变
状态, etc; 既有标准操作,又有非标准操作。 现在看来还有降级使用的标准操作。
不管你信不信, 我是信了。
[1]https://dplyr.tidyverse.org/reference/se-deprecated.html
[2]https://stackoverflow.com/questions/21208801/group-by-multiple-columns-in
-dplyr-using-string-vector-input/
m*j
15 楼
用食物吸引走
puppy终于领回来了?
puppy终于领回来了?
m*n
16 楼
是编程者的精神洁癖不够
像Python的龟叔的洁癖很强
就强行把语法都统一了
而且一个语法在任何情境下都通用
这没有精神洁癖是做不到的
R的思维方式比较老中
就事论事,得过且过
【在 m******r 的大作中提到】
: R的问题既不是‘灵活性’, 也不是‘随意性‘, 而是‘历史局限性’和‘手工作坊
: ’特性。
: 灵活性是褒义词,一个东西可以这么玩,也可以那么玩。 R是整相反。 一个变量用
: group_by, 两个变量用group_by_, 混合变量没准再想另外个法子。
: ‘手工作坊’特性不难理解,hadley wickham 写dplyr, max写caret, julia写
: textmining, mat写data.table,各有各的写法。 几个大厨做的饭,非把他放在一起吃
: ,不知道是个什么味儿。
: ‘历史局限性‘说的是R本来是处理函数的语言, 而不是处理数据的语言,主要是这个
: 戴耳环的新西兰人hadly wickham花了好几年功夫写dplyr, plyr专门让它处理数据。
: 这里面目的性也很强,首先,一般人不会搞什么算法,也不会和函数打交道,所以也没
像Python的龟叔的洁癖很强
就强行把语法都统一了
而且一个语法在任何情境下都通用
这没有精神洁癖是做不到的
R的思维方式比较老中
就事论事,得过且过
【在 m******r 的大作中提到】
: R的问题既不是‘灵活性’, 也不是‘随意性‘, 而是‘历史局限性’和‘手工作坊
: ’特性。
: 灵活性是褒义词,一个东西可以这么玩,也可以那么玩。 R是整相反。 一个变量用
: group_by, 两个变量用group_by_, 混合变量没准再想另外个法子。
: ‘手工作坊’特性不难理解,hadley wickham 写dplyr, max写caret, julia写
: textmining, mat写data.table,各有各的写法。 几个大厨做的饭,非把他放在一起吃
: ,不知道是个什么味儿。
: ‘历史局限性‘说的是R本来是处理函数的语言, 而不是处理数据的语言,主要是这个
: 戴耳环的新西兰人hadly wickham花了好几年功夫写dplyr, plyr专门让它处理数据。
: 这里面目的性也很强,首先,一般人不会搞什么算法,也不会和函数打交道,所以也没
w*y
19 楼
我顺便问一下puppy吃多少的问题。我买的natural balance的狗粮,说20lb的puppy 每
天吃1.5~2cup
我用2/3cup的喂,感觉1、2分钟之内就被风卷残云般吃掉。。。。 但是如果我每天喂3
次这么多也2cup了, puppy貌似刚刚开了喂,吃完不停啃饭盆。 我只好喂一两口红薯
、南瓜什么的意思意思。
不过这个puppy很乖,压根不知道table begging,大概不知道送到我嘴里的东西他也能
吃 哈哈
天吃1.5~2cup
我用2/3cup的喂,感觉1、2分钟之内就被风卷残云般吃掉。。。。 但是如果我每天喂3
次这么多也2cup了, puppy貌似刚刚开了喂,吃完不停啃饭盆。 我只好喂一两口红薯
、南瓜什么的意思意思。
不过这个puppy很乖,压根不知道table begging,大概不知道送到我嘴里的东西他也能
吃 哈哈
d*a
20 楼
如果是20岁左右的小年轻,有的是时间折腾
但是岁数大了以后,就喜欢一种方法适合所有情况,即便在很多情况下不是最优的
【在 d******c 的大作中提到】
: 应该不是group_by自己的问题,而是R传统里很多地方有把名字直接用不加引号的习惯
: ,然后要用变量的时候肯定得用个不同语法。
: 如果说直接用的case有80%,那算是为了这80%的方便,把剩下的20%搞的费劲一些。如
: 果你用其他情况实际更多,那就麻烦更多一些。
: 传统R里有时用quote/get那一套来解决,依靠non-standard evaluation,那个更麻烦
: ,也容易出问题
: http://adv-r.had.co.nz/Computing-on-the-language.html
: dplyr用不同的函数,算是另一种路子。
: data.table里也是,如果要用一个变量来代表要用的列名,有很多绕的地方。
但是岁数大了以后,就喜欢一种方法适合所有情况,即便在很多情况下不是最优的
【在 d******c 的大作中提到】
: 应该不是group_by自己的问题,而是R传统里很多地方有把名字直接用不加引号的习惯
: ,然后要用变量的时候肯定得用个不同语法。
: 如果说直接用的case有80%,那算是为了这80%的方便,把剩下的20%搞的费劲一些。如
: 果你用其他情况实际更多,那就麻烦更多一些。
: 传统R里有时用quote/get那一套来解决,依靠non-standard evaluation,那个更麻烦
: ,也容易出问题
: http://adv-r.had.co.nz/Computing-on-the-language.html
: dplyr用不同的函数,算是另一种路子。
: data.table里也是,如果要用一个变量来代表要用的列名,有很多绕的地方。
w*y
21 楼
起床了^_^
m*r
22 楼
不在于年龄, 也不在于性别。
所谓数据分析,是各类分析中末流的末流。 处理数据的语言,也应该是末流中的末流。
一门好的处理数据的语言,我认为应该像sql, 正常智商的人半天入门,一周掌握,几
个月精通。像dplyr这种, 吭哧吭哧,发明了无数奇技淫巧,引入了一整套函数式编程
的江湖黑话,连楼主如此简单的用户需求, 都要绕这么大个圈, 确实令人对dplyr丧
失信心。
楼主的需求, 在sql里,无非就是group by A, 和group by A, B。
所谓数据分析,是各类分析中末流的末流。 处理数据的语言,也应该是末流中的末流。
一门好的处理数据的语言,我认为应该像sql, 正常智商的人半天入门,一周掌握,几
个月精通。像dplyr这种, 吭哧吭哧,发明了无数奇技淫巧,引入了一整套函数式编程
的江湖黑话,连楼主如此简单的用户需求, 都要绕这么大个圈, 确实令人对dplyr丧
失信心。
楼主的需求, 在sql里,无非就是group by A, 和group by A, B。
m*n
26 楼
是的,语法没有通用性。
这里用着不错下回那里一用就崩溃,是心理暴击。
编程最讨厌的是语言自己有缺陷,类似R这种。
但是好像编程都会遇到,尤其是和硬件打交道的。
【在 w********m 的大作中提到】
: 我是统计转马公的低端程序员。
: 统计语言有很大的问题。
: 像R,SAS还有matlab,总觉得用户写不了循环。
: 什么事情都得用个轮子或者dsl。
: 其实aggregation这类,就是循环一下加个hash table就解决的问题。
: 很简单的算法,然而,必须去查他们的document,或者stackoverflow。
: 这样的编程会很累,不会有那种一气呵成的击杀感。
: 对编程的兴趣是个打击。久而久之,就搞得很苦逼了。
这里用着不错下回那里一用就崩溃,是心理暴击。
编程最讨厌的是语言自己有缺陷,类似R这种。
但是好像编程都会遇到,尤其是和硬件打交道的。
【在 w********m 的大作中提到】
: 我是统计转马公的低端程序员。
: 统计语言有很大的问题。
: 像R,SAS还有matlab,总觉得用户写不了循环。
: 什么事情都得用个轮子或者dsl。
: 其实aggregation这类,就是循环一下加个hash table就解决的问题。
: 很简单的算法,然而,必须去查他们的document,或者stackoverflow。
: 这样的编程会很累,不会有那种一气呵成的击杀感。
: 对编程的兴趣是个打击。久而久之,就搞得很苦逼了。
a*8
27 楼
": 不过这个puppy很乖,压根不知道table begging,大概不知道送到我嘴里的东西他
也能
在吃东西,还没开始吃,就是把东西方到我的桌子上,屁屁就坐在旁边眼巴巴的看着我
了,看着可委屈了,好像我从来没给他吃饱过一样。sign......
喂3
也能
在吃东西,还没开始吃,就是把东西方到我的桌子上,屁屁就坐在旁边眼巴巴的看着我
了,看着可委屈了,好像我从来没给他吃饱过一样。sign......
喂3
m*r
28 楼
所谓数据分析, 老土管他叫‘熟橘分洗’,很形象, 大部分人做的,无非是根据业务
逻辑,对数据在不同层次上( 楼主题目中的group_by)进行aggregate, 然后对剩下的
变量请小学生做个加减乘除。。
这么简单的事儿 不知道为什么hadley 好多年从plyr改到dplyr改到tidyverse 引入各
种奇异的语法, pipe operator, mutate, underscore version of verbs, etc 结果
却像一架庞大的官僚机器, 机构臃肿 部门众多,却不能有效解决一个像楼主问的简单
问题。
【在 w********m 的大作中提到】
: 我是统计转马公的低端程序员。
: 统计语言有很大的问题。
: 像R,SAS还有matlab,总觉得用户写不了循环。
: 什么事情都得用个轮子或者dsl。
: 其实aggregation这类,就是循环一下加个hash table就解决的问题。
: 很简单的算法,然而,必须去查他们的document,或者stackoverflow。
: 这样的编程会很累,不会有那种一气呵成的击杀感。
: 对编程的兴趣是个打击。久而久之,就搞得很苦逼了。
逻辑,对数据在不同层次上( 楼主题目中的group_by)进行aggregate, 然后对剩下的
变量请小学生做个加减乘除。。
这么简单的事儿 不知道为什么hadley 好多年从plyr改到dplyr改到tidyverse 引入各
种奇异的语法, pipe operator, mutate, underscore version of verbs, etc 结果
却像一架庞大的官僚机器, 机构臃肿 部门众多,却不能有效解决一个像楼主问的简单
问题。
【在 w********m 的大作中提到】
: 我是统计转马公的低端程序员。
: 统计语言有很大的问题。
: 像R,SAS还有matlab,总觉得用户写不了循环。
: 什么事情都得用个轮子或者dsl。
: 其实aggregation这类,就是循环一下加个hash table就解决的问题。
: 很简单的算法,然而,必须去查他们的document,或者stackoverflow。
: 这样的编程会很累,不会有那种一气呵成的击杀感。
: 对编程的兴趣是个打击。久而久之,就搞得很苦逼了。
D*n
30 楼
好久沒用R,之前都是base裡面最簡單的辦法處理數據。
好像現在dplyr是主流,就看了一下,本來還覺得挺好的,後來發現這些問題,也頭都
大,搞的那麼噁心,還真的不如用SAS了。。。
【在 m******r 的大作中提到】
: 所谓数据分析, 老土管他叫‘熟橘分洗’,很形象, 大部分人做的,无非是根据业务
: 逻辑,对数据在不同层次上( 楼主题目中的group_by)进行aggregate, 然后对剩下的
: 变量请小学生做个加减乘除。。
: 这么简单的事儿 不知道为什么hadley 好多年从plyr改到dplyr改到tidyverse 引入各
: 种奇异的语法, pipe operator, mutate, underscore version of verbs, etc 结果
: 却像一架庞大的官僚机器, 机构臃肿 部门众多,却不能有效解决一个像楼主问的简单
: 问题。
好像現在dplyr是主流,就看了一下,本來還覺得挺好的,後來發現這些問題,也頭都
大,搞的那麼噁心,還真的不如用SAS了。。。
【在 m******r 的大作中提到】
: 所谓数据分析, 老土管他叫‘熟橘分洗’,很形象, 大部分人做的,无非是根据业务
: 逻辑,对数据在不同层次上( 楼主题目中的group_by)进行aggregate, 然后对剩下的
: 变量请小学生做个加减乘除。。
: 这么简单的事儿 不知道为什么hadley 好多年从plyr改到dplyr改到tidyverse 引入各
: 种奇异的语法, pipe operator, mutate, underscore version of verbs, etc 结果
: 却像一架庞大的官僚机器, 机构臃肿 部门众多,却不能有效解决一个像楼主问的简单
: 问题。
m*r
32 楼
y*d
33 楼
差不多
我们家的狗子也是3-4个月开始蹲桌边的
我们家的狗子也是3-4个月开始蹲桌边的
D*n
34 楼
是啊,不得不說SAS對於最基本的數據處理已經是爐火純青了。
經過這麼多年的改進,SAS的proc都會比較乾淨,語法規整。
相比之下走出base R, R的各種package隨意來,。。。。
SAS基本上row wise的操作已經沒什麼問題
column wise就套用不同的procs
壞處就是複雜一點的數據邏輯不能直接從邏輯轉換為code,而是要套變成SAS的這種
style
.
【在 m******r 的大作中提到】
: hadley真应该学学sas的均值过程。 一个均值过程,无论你有多少factor,多少变量,
: 不管你要求多少统计值, 都是一网打尽不超过5,6行代码。 一本均值过程手册,不知
: 道超不超过200~300页,一天就看完了。
: sas里面特有的by_group processing只要一行代码,by xxx后面随便你放多少factor.
: 概念上也是一脉相承, 完全可以用在其他过程步。
經過這麼多年的改進,SAS的proc都會比較乾淨,語法規整。
相比之下走出base R, R的各種package隨意來,。。。。
SAS基本上row wise的操作已經沒什麼問題
column wise就套用不同的procs
壞處就是複雜一點的數據邏輯不能直接從邏輯轉換為code,而是要套變成SAS的這種
style
.
【在 m******r 的大作中提到】
: hadley真应该学学sas的均值过程。 一个均值过程,无论你有多少factor,多少变量,
: 不管你要求多少统计值, 都是一网打尽不超过5,6行代码。 一本均值过程手册,不知
: 道超不超过200~300页,一天就看完了。
: sas里面特有的by_group processing只要一行代码,by xxx后面随便你放多少factor.
: 概念上也是一脉相承, 完全可以用在其他过程步。
相关阅读
one question about delete in c++Anybody using Python?一个小问题问一个IBM MQ的问题最初级的白痴C++问题求助:script for commands (转载)这里有人熟悉prolog吗?请问一个implicit conversion的问题(C++)C++问题,confusing...What are possible reasons for the program to crash before rawk求救GCC对单行的表达式的长度有限制么?random number generator in C++问一个C++ template的问题C++的console程序,如何获取按键事件解一道 GOOGLE 面试题 ...初级socket问题gcc和vc问一个inheritance的初级问题请教template和factory有啥区别?