如何将数据框中的调查答案转换为数字以平均结果

时间:2013-03-12 21:48:04

标签: r

我的调查结果数据框如下所示:

          Q1         Q2       Q3
1      Agree No opinion Disagree
2 No opinion No opinion Disagree
3      Agree            Disagree

如何将调查回复转换为数字,以便我可以得到每个问题的平均回答?我可以使用gsub替换每列中每个文本答案的数值,但必须有更好的方法。

> str(x)
'data.frame':   3 obs. of  3 variables:
 $ Q1: Factor w/ 2 levels "Agree","No opinion": 1 2 1
 $ Q2: Factor w/ 2 levels "","No opinion": 2 2 1
 $ Q3: Factor w/ 1 level "Disagree": 1 1 1

2 个答案:

答案 0 :(得分:3)

好的,现在很清楚。

我会将每列转换为字符,然后转换为因子(使用常见级别),然后转换为整数:

sapply(data, function(x) as.integer(factor(as.character(x), levels=c("Agree", "No opinion", "Disagree"))))

答案 1 :(得分:0)

我必须误解你想要的东西,但由于你在data.frame中有分类变量,你不能只使用summary吗?

#Example
q1 <- sample( c("Agree" , "No opinion" ) , 10 , replace = TRUE )
q2 <- sample( c(" " , "No opinion" ) , 10 , replace = TRUE )
q3 <- sample( c("Agree" , "Disagree" ) , 10 , replace = TRUE )

x <- data.frame( q1 , q2 , q3 )

summary(x)
  q1             q2           q3   
  Agree     :4   ,         :4   Agree   :5  
  No opinion:6   No opinion:6   Disagree:5