2012-09-23 47 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)