2012-09-23 23 views
0

在SAS中,我们可以编写宏来导入文件。宏可以是这样的形式:像SAS一样在R中导入数据

%MACRO IMPORT_Data(OUT = , FILE =); 

     data &OUT ; 
      infile "&INPUT_path.\&File" 
      delimiter = ',' MISSOVER DSD lrecl=32767 
      firstobs=2 ; 

      input 
       Var1 : $10. 
       Var2 : best12. 
       Var3 : Percent5.2 
       Var4 
       Var5 


      ; 
%mend; 

一旦我们有了这个宏,我们只需要改变文件名,并运行宏。每次我们读取文件时,我们都不需要编写导入文件的语法。任何人都可以帮助我获得R中的版本吗?一个参考也非常感谢。

+0

你正在寻找一个函数()? http://stat.ethz.ch/R-manual/R-devel/library/base/html/function.html – djhurio

+0

我不是在找一个函数。但是我在R中有一个宏选项,可以做我想要的。在这方面也有一些问题,所以在回答一些有用的意见。 – Beta

+0

不完全是你的问题,但如果你已经有SAS脚本,你可能会发现SAScii包有用http://cran.r-project.org/web/packages/SAScii/ –

回答

3

您正在寻找功能。用户定义的函数用于读取指定的csv文件,将一些格式应用于一个或多个列,并返回结果。这里有一个例子:

import_macro <- function(file, ...) { 
data <- read.csv(file, ...) 
# do whatever formatting you need to do. e.g. 
data$v1 <- as.numeric(data$var1) 
# var1 should be a column in your csv otherwise change it to something else 
return(data) 
} 

然后你只需运行:

my_data <- import_macro('~/Desktop/file.csv', header = TRUE) 
+0

谢谢Maiasaura!这个很棒! – Beta

+0

抱歉打扰你Maiasaura。但是当我使用你的代码时,我得到错误。也许我在“...”部分犯了一些错误。是否有可能编写完整的代码?我试着用谷歌搜索来更新代码。但不幸的是,我无法得到正确的答案。谢谢! – Beta

+1

'...'允许您选择将其他参数传递给函数中的'read.csv'。因此,如果您查找'?read.csv'的选项,则可以从外部传递这些选项。这是完整的代码。如果你不需要它们,只需运行'import_macro('C:/file.csv')' – Maiasaura

0

下面的代码可以帮助我像在SAS中那样读取数据。但是我无法在这里格式化我的数据。因此,请回答一些有用的意见。

imp<-strmacro(df,var,expr={df<-read.csv("C:\\Users\\RAW_DATA\\var.csv")}) 

mydata<-imp(mydata,"Import_data") /* Data set file name*/ 
View(mydata)