小编ESm*_*988的帖子

编辑SAS配置文件以执行R(使SAS与其他人一起玩得很好)

R有很多东西可以做得更好.因此,我试图设置我的系统,以便我可以使用[submit/R;]和[endsubmit;]命令从SAS内执行R命令.但是我需要一些帮助才能正确设置我的配置文件来执行此操作.

第一步(允许SAS读取R语言):

我检查了我的系统是否设置为读取R语言(下面的代码).

proc options option=rlang;
run;
Run Code Online (Sandbox Code Playgroud)

我的日志中有以下内容:

SAS (r) Proprietary Software Release 9.3  TS1M0

NORLANG           Do not support access to R language interfaces
Run Code Online (Sandbox Code Playgroud)

这意味着我需要在配置文件中添加-RLANG选项.我做到了 下面是我的配置文件的示例(C:\ Program Files\SASHome\SASFoundation\9.3\sasv9.cfg):

-RLANG
-config "C:\Program Files\SASHome\SASFoundation\9.3\nls\en\sasv9.cfg"
Run Code Online (Sandbox Code Playgroud)

(注意:-RLANG必须高于配置参考,才能正确识别.)

在重新打开企业指南并重新运行上面的proc选项代码之后,在我的日志中生成结果:

SAS (r) Proprietary Software Release 9.3  TS1M0

RLANG             Support access to R language interfaces
Run Code Online (Sandbox Code Playgroud)

问题(特定于企业指南?):

我正在使用SAS 9.3和R 2.15.2,所以根据这个(http://blogs.sas.com/content/iml/2013/09/16/what-versions-of-r-are-supported-by- sas /)这些版本是兼容的.

但是,我通过企业指南4.3(我更喜欢组织)执行SAS.看来,企业指南可能需要配置文件中的一些额外内容,以允许R运行并识别它在我的计算机上的位置.

例如,我尝试运行以下代码:

Proc iml;
  submit /R;
        directory <- "C:\\Data\\Filepath"
        FILEpattern1 <- "Fall 12-13.xlsx"

        setwd(directory)
        filenames1 <- list.files(pattern=FILEpattern1)
  endsubmit; 
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

15         Proc iml;
NOTE: IML …
Run Code Online (Sandbox Code Playgroud)

configuration r sas

6
推荐指数
1
解决办法
5590
查看次数

R - 导入和合并多个Excel文件并添加文件源变量

在过去的一年里我使用过R来做各种各样的事情,但是由于可用的软件包和功能的数量,我仍然是一个初学者.我相信R会允许我用最少的代码做我想做的事,但我很挣扎.

我想做的事:

我有大约一百个不同的excel文件,其中包含学生的数据.每个excel文件代表不同的学校,但包含相同的变量.我需要:

  1. 从Excel导入数据到R中
  2. 将变量添加到包含文件名的每个文件
  3. 合并所有数据(添加观察/行 - 不需要匹配变量)

我需要为多组数据执行此操作,因此我尝试使其尽可能简单且易于复制.

数据看起来像什么:

行1     标题
行2     StudentID VAR1 VAR2 VAR3 VAR4 VAR5
行3     11234 1 2011/9/8 343 159-167 32
行4     11235 2 2011/9/16 112 152-160 12
行5     11236 1 2011/9/8 325 164 -171 44

第1行没有意义,第2行包含变量名.文件具有不同的行数.

到目前为止我所拥有的:

起初我只是尝试从excel导入数据.使用XLSX包,这很好用:

dat <- read.xlsx2("FILENAME.xlsx", sheetIndex=1, 
                  sheetName=NULL, startRow=2, 
                  endRow=NULL, as.data.frame=TRUE, 
                  header=TRUE)
Run Code Online (Sandbox Code Playgroud)

接下来,我把重点放在搞清楚如何合并文件(也认为这是我应该的文件名变量添加到数据文件).这是我被卡住的地方.

setwd("FILE_PATH_TO_EXCEL_DIRECTORY")
filenames <- list.files(pattern=".xls")
do.call("rbind", lapply(filenames, read.xlsx2, sheetIndex=1, colIndex=6, header=TRUE, startrow=2, FILENAMEVAR=filenames));
Run Code Online (Sandbox Code Playgroud)

我把我的目录,使所有的文件夹中的Excel文件名列表,然后尝试使用变量作为文件名,以将它们合并在一个语句.

当我这样做时,我收到以下错误:

data.frame(res,...)中的错误:参数意味着行数不同:616,1,5 …

import excel merge r import-from-excel

5
推荐指数
1
解决办法
1万
查看次数

R - ggplot2 - 如果 geom_errorbar 超出限制,则添加箭头

我正在使用 ggplot 创建一个图形,并想使用箭头来指示我的误差线超出定义轴的位置。例如,我想最终得到一个如下所示的图形: 数字

我希望 R 确定哪些下限超出了定义的图表范围,并添加一个漂亮的箭头(而不是我丑陋的油漆添加的箭头)。

我知道必须有办法做到这一点。有任何想法吗?这是我的代码,用于制作上面的图表,而无需手动添加箭头:

#generate data
myData<-data.frame(ALPHA=round(runif(60,.5,.8),2),
                   error=round(runif(60,.05,.15),2),
                   formN=rep(1:5,12),
                   Cat=c(rep("ELL",30),rep("SWD",30)),
                   grade=rep(c(rep(3,5),rep(4,5),rep(5,5),rep(6,5),rep(7,5),rep(8,5)),2)
                   )
myData$LCL<-myData$ALPHA-myData$error
myData$UCL<-myData$ALPHA+myData$error

#set error outside of range for example
myData[myData$Cat=="ELL" & formN==1,"LCL"]<-0

library(ggplot2)
ggplot(myData, aes(x=formN, y=ALPHA, colour=Cat)) + 
  geom_errorbar(aes(ymin=LCL, ymax=UCL), width=.4, position=position_dodge(.5)) +
  geom_point(position=position_dodge(.5), size=2) +
  labs(x="Form", y="Alpha", title="TITLE") +
  geom_line(position=position_dodge(.5), size=.3) +
  coord_cartesian(ylim=c(.3, 1)) + 
  facet_wrap(~grade, ncol=3)
Run Code Online (Sandbox Code Playgroud)

r ggplot2

4
推荐指数
1
解决办法
4416
查看次数

标签 统计

r ×3

configuration ×1

excel ×1

ggplot2 ×1

import ×1

import-from-excel ×1

merge ×1

sas ×1