0%

Data input and output (SAS & R)

我一直想找一个合适的方法来记录SAS的学习笔记,最好能结合以往的编程经验(如R or Python);我想到了当初学习Python的时候是根据实际需要,结合R/Perl的既往经验来互补学习,那么SAS也是可以这样。

后来我发现有一本书《SAS and R: Data Management, Statistical Analysis, and Graphics (second edition)》,这本书写内容的也正好是我想要做的:基于实际需求,尤其是在数据处理这部分,分别列出R和SAS的实现方法。这样会使得记忆更加深刻点

因此我打算参考这本书的思路,以系列的形式来记录SAS的笔记;


This is reference to the Data input and output (chapter 1) from <SAS and R: Data Management, Statistical Analysis, and Graphics (second edition)>

Input native dataset

在R中,看到.rda结尾文件,我们一般认为其是R数据集,常用load()来加载文件,用save()在R中将数据保存为.rda格式

load(file = "mydata.rda")

在SAS中,SAS数据集是以.sas7bdat结尾,用libname加载文件,保存也类同

libname libref "C:\Users\temp";
data ds2;
  set libref.ds;
run;

Input TXT file or CSV file

在R中,有多种读取TXT或者CSV的函数和R包,比如基础的函数read.table()或者read.csv(),我常用的包有data.tablereadr

在SAS中,一般会用proc import

/*input csv files*/
filename mycsv "C:/demo.csv";
proc import out=mycsv datafile=mycsv
  dbms=csv replace;
  getnames=yes;
  guessingrows=20;
  datarow=2;
run;

/*input txt files with tab delimiter*/
filename mytxt "C:/demo.txt";
proc import out=mytxt datafile=mytxt
  dbms=dlm replace;
  delimiter='09'x;
  getnames=yes;
run;

Input XLSX file

在R中,一般用R包读取外部XLSX中sheet的数据,如xlsx包,有时openxlsx包也不错

df <- xlsx::read.xlsx(file = "data.xlsx", sheetIndex = 1)

在SAS中,还是适用proc import,设置dbms=excel

/*input excel files*/
filename myexcel "C:/class.xlsx";
proc import out=myxls datafile=myexcel
  dbms=excel replace;
run;

Input manual data entry

在R中,常见的数据格式有向量c()、列表list()以及数据框data.frame()

在SAS中,用input生成自定义的数据

data wide;
  input SID $ Programming State English;
  datalines;
  S01 98 100 80
  S02 84 98 94
  S03 89 92 88
  ;
run;

Displaying data

在R中,查看部分数据可以用print()函数,查看数据格式用str()函数

以上对应到SAS中,分别是proc printproc content

Output native/TXT/CSV/XLSX file

在R中,native data用save()函数,TXT/CSV对应write.table(),XLSX对应xlsx::write.xlsx()或者openxlsx::write.xlsx()

在SAS中,native数据跟input类似

libname libref "C:\Users\temp";
data temp.ds;
  set work.ds;
run;

TXT、CSV以及XLS都可以用proc export

proc export data=ds outfile="C:/Users/temp/filename.xls"
  dbms=excel;
run;

参考资料:

SAS and R: Data Management, Statistical Analysis, and Graphics (second edition)

本文出自于http://www.bioinfo-scrounger.com转载请注明出处