SAS vs R in dynmaic var names

D
DaShagen
楼主 (未名空间)

In SAS you can utilize macro variables to achieve dynamic variable names
without reinventing new commands/statements, for instance:
...
by product;
...

can be done by

%let bygroup=product;
...
by
....

In R, if you use base methods, its ok, but if you utilize dplyr or ggplot,
its a nightmare

they invent !! , quo, and sometimes they dont work, so there are the "_"
versions
group_by --> group_by_, select --> select_

and for aes its even more pathetic, there is aes, aes_ , aes_string.......

and the most difficult part is syntax across the variations of same command is not that consistent and not easy to write the correct code to do what
exactly you intend to.....

m
magliner
2 楼

给你用白话文翻译一下。 sas有base, r也有base. 1:1平。
sas有stat,r也有stat.2:2平。
sas能画画,r也能画画。 免费美女好看? 还是收费的美女好看 ? 。 2:3 就算r赢。
下面才是重要的问题: 宏。 宏在计算机语言里是个重要功能, 通俗讲就是产生语言
的语言。更通俗讲,会excel不难,想编程,就得用vba, 会sql不难,想编程就得学pl/sql; 会sas不难,想编程,就得学sas/macro, 文档是免费的,大概60页,比较烧脑,
但‘教科书’就摆在哪儿了。 还是全国统一的教科书。

会r不难, 想编程,你就抓瞎了。 你打算用谁的宏呢? 首先 r本身没有这么个模块。
hadley wickham把宏塞给了dplyr, 引入另外一套江湖黑话:标准计算SE, 和非标准计
算NSE, 同样的函数,如果后缀是_,他就是标准计算,如果没有,就是标准非标准计算。

看起来不难嘛, 那请往下看...
作为函数式编程的语言,quosure, 即函数产生的函数,hadley的宏,根据quosure还
会有些变种, 你要学更多的函数。

看起来不难,那请往下看...
随着dplyr发展成tidyverse, wickham逐渐开发起另一套系统,发明了奇葩函数bang
bang (!!) 和 bang bang bang (!!!). 同时tidyverse文档告诉你, dplyr里面的所
有标准计算从此depreciate。 what? 贬值了? 是的,你的知识在贬值。因为hadley
的所谓dplyr要往前走啊。

除了标准计算贬值,还有增值的东西么? 也许有。rlang. rlang我一直不厚道地猜测
是hadley 模仿SAS language dictionary 做的。 一门语言, 没有字典, 寒碜啊。

那你确定rlang 以后会增值么? 天知道。 从plyr到dplr到rlang到tidyverse, 也就
是最近几年的事情,明年hadley写个关于宏的新函数,一点不奇怪。

faq1: 你见过最奇葩的宏语法是什么?
今天你学会了如何把患者按性别汇总。 明天,老板让你把患者按性别和年龄段汇总。 你就抓瞎了,你又得学新的语法。 是的,一个 变量,和两个变量要用不同的语法
。 然后你去google,你会发现十个人会用不同的答案,每个答案会用不同的语言包。
或者是同一个语言包的不同版本,有的hadley说已经'贬值'了。

faq2: 见过的奇葩宏函数
setNames,
vars()
one_of()
interp()
sym()
as.name
quo
enquo
quote
enquote
expr
enexpr
exprs
enexprs
ensym
ensyms
quos
enquos

D
DaShagen
3 楼

看來你受害不淺啊。
我是很久沒用R,發現之前用BASE的辦法好像比較落後,現在有這些dplyer鬼。。。就
學學。誰知道真是邊學邊罵街。。。。

Python的 pandas也是這樣嗎?

【 在 magliner (magliner) 的大作中提到: 】
: 给你用白话文翻译一下。 sas有base, r也有base. 1:1平。
: sas有stat,r也有stat.2:2平。
: sas能画画,r也能画画。 免费美女好看? 还是收费的美女好看 ? 。 2:3 就算r赢。
: 下面才是重要的问题: 宏。 宏在计算机语言里是个重要功能, 通俗讲就是产生语言
: 的语言。更通俗讲,会excel不难,想编程,就得用vba, 会sql不难,想编程就得学
pl/
: sql; 会sas不难,想编程,就得学sas/macro, 文档是免费的,大概60页,比较烧脑,
: 但‘教科书’就摆在哪儿了。 还是全国统一的教科书。
: 会r不难, 想编程,你就抓瞎了。 你打算用谁的宏呢? 首先 r本身没有这么个模块。
: hadley wickham把宏塞给了dplyr, 引入另外一套江湖黑话:标准计算SE, 和非标准计
: 算NSE, 同样的函数,如果后缀是_,他就是标准计算,如果没有,就是标准非标准计算。
: ...................

X
XBaldwin
4 楼

这个白话文翻译很牛啊!

Hadley 不仅自己换代快, 现在还拉上了一个Max Kuhn,这么好的Caret居然说不维护
了, 换成Parsnip了, 而且还给你搞一套餐:tidymodels。不过说实话,R要不是
Hadley和Rstudio这帮牛人,早都死翘翘了。现在tidyverse和tidy models用起来是比
较容易上手。最烦还是R的OOP:S3,S4, R6.

SAS 的DS2感觉用起来还不错。

【 在 magliner (magliner) 的大作中提到: 】
: 给你用白话文翻译一下。 sas有base, r也有base. 1:1平。
: sas有stat,r也有stat.2:2平。
: sas能画画,r也能画画。 免费美女好看? 还是收费的美女好看 ? 。 2:3 就算r赢。
: 下面才是重要的问题: 宏。 宏在计算机语言里是个重要功能, 通俗讲就是产生语言
: 的语言。更通俗讲,会excel不难,想编程,就得用vba, 会sql不难,想编程就得学
pl/
: sql; 会sas不难,想编程,就得学sas/macro, 文档是免费的,大概60页,比较烧脑,
: 但‘教科书’就摆在哪儿了。 还是全国统一的教科书。
: 会r不难, 想编程,你就抓瞎了。 你打算用谁的宏呢? 首先 r本身没有这么个模块。
: hadley wickham把宏塞给了dplyr, 引入另外一套江湖黑话:标准计算SE, 和非标准计
: 算NSE, 同样的函数,如果后缀是_,他就是标准计算,如果没有,就是标准非标准计算。
: ...................