#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为调查回复创建频率表,并使用值标签创建更有用的频率表。
我还在创建频率表之前编辑R中的数据以删除无效值,并使用write.csv导出data.frame以供参考。
我希望导出的data.frame显示每个问题的编码,而不是它的标签。目前为此,我为频率创建了一个新的标记data.frame并导出原始data.frame。
这会导致参考和分析data.frames之间存在差异的危险。
有没有办法将级别而不是标签导出到csv文件?
答案 0 :(得分:1)
创建一个从单个向量中剥离级别的函数:
f <- function(x) {
if(is.factor(x)) {
return(as.numeric(x))
} else {
return(x)
}
}
将该功能应用于data.frame:
df <- sapply(f,df)