2012-02-17 84 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