在SAS中有一種創建庫的方法(使用LIBNAME)。這是很有用的,因爲當我們需要做長時間的數據處理時,我們並不總是改變數據集名稱。因此,如果我們想再次使用數據集,而不更改名稱,我們可以放入一個庫。因此,即使數據集名稱相同,但由於它們位於不同的庫中,我們可以一起處理它們。在R中創建類SAS庫L
我的問題是有R中的任何這樣的選擇,它可以創建庫(或R內單獨的文件夾),這樣我們就可以節約我們的數據呢?
這裏的例子:
假設我有一個數據集 「DAT1」。我總結了變量var1中的變量var1 & var2。
proc summary data=dat1 nway missing;
var var1 var2;
class var3;
output out=tmp.dat1 (drop = _freq_ _type_) sum = ;
run;
然後我合併DAT1與DAT2,這是另一個dataset.Both DAT1 & DAT2具有共同變量VAR3,與我合併。我再次創建了新的數據集dat1。
proc sql;
create table dat1 as
select a.*,b.*
from dat1 a left join tmp.dat2 b
on a.var3=b.var3;
quit;
現在,我又總結數據集DAT1合併,以檢查是否VAR1 &變種2的值&之前保持不變,合併後之後。
proc summary data=dat1 nway missing;
var var1 var2;
class var3;
output out=tmp1.dat1 (drop = _freq_ _type_) sum = ;
run;
R中的等效代碼將是
dat3<-ddply(dat1,.(var3),summarise,var1=sum(var1,na.rm=TRUE),var2=sum(var2,na.rm=TRUE))
dat1<-sqldf("select a.*,b.* from dat1 a left join dat2 b on a.var3=b.var3")
dat4<-ddply(dat1,.(var3),summarise,var1=sum(var1,na.rm=TRUE),var2=sum(var2,na.rm=TRUE))
在SAS的情況下,我使用的只是2數據集名稱。但是在R的情況下,我使用4個數據集名稱。因此,如果我正在編寫4000行代碼進行數據處理,那麼有時數據集名稱過多有時會變得難以逾越。在sas中,與使用默認工作庫以外的2個庫tmp,tmp1相同的數據集名稱變得很容易。
在SAS,庫被定義爲:
LIBNAME tmp "directory_path\folder_name";
在該文件夾中,DAT1將被存儲。
這個問題可能對SAS用戶有意義,但對我們其他人來說沒有意義。你爲什麼不解釋你想從R中得到什麼,以及你目前的做事方式缺乏?也許用[可重現的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? –
要保存數據集,請參閱'?save'('?load'來加載它們)。 – sgibb
您的問題是您正在編寫4000行腳本。在SAS中,這可能不是一個問題,超過五行的任何內容都已經混淆了,但是在R中,你不應該寫任何超過十行的東西,而不會想到「嘿,這應該被包含在一個函數中。 – Spacedman