2012-02-17 85 views
0
#creating dataframe  
df1=data.frame(c("Mary","Sarah","Linda","Mark","Shaun","Jo"),c(1,2,3,4,5,6),c(2,2,2,1,1,2)) 
names(df1)=c("a","b","c") 
#setting levels and labels for questions b and c 
blevels=c(1,2,3,4,5,6) 
blabels=c("bike","walk","car","bus","train","subway") 
clevels=c(1,2) 
clabels=c("male","female") 
#creating labelled data.frame 
df2=df1 
#applying labels 
df2$b<-factor(df1$b,blevels,blabels) 
df2$c<-factor(df1$c,clevels,clabels) 

我使用R爲調查響應創建頻率表,並使用值標籤創建更多有用的頻率標籤。將data.frame內的級別導出到csv

我還在創建頻率表之前編輯R中的數據以刪除無效值並使用write.csv導出data.frame以供參考。

我想導出的data.frame顯示每個問題的編碼,而不是它的標籤。目前爲此,我爲頻率創建一個新的標記的data.frame並導出原始data.frame。

這會導致參考數據與分析數據幀之間存在差異的風險。

有沒有辦法將等級而不是標籤導出到csv文件?

+0

你試過了'foreign'包?您可以直接編寫SPSS文件。 – 2012-02-17 14:40:48

+0

我不確定這就是我想要做的,我曾經使用SPSS,現在正在尋找在R中複製相同的分析過程。我編輯了我的問題以刪除SPSS參考,因爲它可能使事情混淆不清。 – BuckyOH 2012-02-17 14:47:02

+0

如果你打算分析大量的調查數據,你應該看看我的(尚未發佈的)GitHUB上的軟件包:https://github.com/andrie/surveydata和https://github.com/andrie/surveyor – Andrie 2012-02-17 15:26:33

回答

1

創建功能從單一載體剝離層次:

f <- function(x) { 
    if(is.factor(x)) { 
     return(as.numeric(x)) 
    } else { 
     return(x) 
    } 
} 

應用該功能的data.frame:

df <- sapply(f,df) 
+0

謝謝,但我正在打印data.frame只顯示其值標籤,而不是從原始data.frame中刪除值標籤。 – BuckyOH 2012-02-17 16:14:53

+0

你想要「水平而不是標籤」。如果您改變了標籤,請將as.numeric更改爲as.character。 – 2012-02-17 18:09:32