评分问卷使用公式的受访者

时间:2014-01-06 19:41:02

标签: r plyr

建立了一个包含多个单项选择题的调查问卷,以便对受访者进行评分。最初对每个问题的选择进行评分。这个初始分数可能会改变,但与问题无关。下面列出的value列反映了这个初始分数。

我想使用一个加权问题的公式给受访者评分。由于公式可能会发生变化以反映不同的评估标准,因此更自然的选择是获得答案。

简单示例

structure(list(id = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), 
.Label = c("Ind_1", "Ind_2"), class = "factor"),
question = structure(c(1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L),
.Label = c("Q1", "Q2", "Q3", "Q4", "Q5"), class = "factor"),
value = c(1L, 1L, 3L, 2L, 5L, 1L, 2L, 3L, 2L, 4L)),
.Names = c("id", "question", "value"),
class = "data.frame", row.names = c(NA, -10L))

代表:

id  question    value
Ind_1   Q1  1
Ind_1   Q2  1
Ind_1   Q3  3
Ind_1   Q4  2
Ind_1   Q5  5
Ind_2   Q1  1
Ind_2   Q2  2
Ind_2   Q3  3
Ind_2   Q4  2
Ind_2   Q5  4

公式: 这是为了对受访者进行评分而应用的公式

2*((Q1+ 1.5*Q2)/2) + 2.5*((Q3+(2*Q4)+Q5)/3)

预期结果

id  scored_value
Ind_1   12.50
Ind_2   13.17

希望这很清楚

1 个答案:

答案 0 :(得分:3)

可能有更好的答案。首先,我使用reshape2包将数据从long转换为wide。然后我使用plyr包计算了得分值。

foo <- read.table(text="id  question    value
Ind_1   Q1  1
Ind_1   Q2  1
Ind_1   Q3  3
Ind_1   Q4  2
Ind_1   Q5  5
Ind_2   Q1  1
Ind_2   Q2  2
Ind_2   Q3  3
Ind_2   Q4  2
Ind_2   Q5  4", header=TRUE)

library(reshape2)
# convert from long to wide
bar <- dcast(foo, id ~ question)

library(plyr)
# for each id, compute the scored value
baz <- ddply(bar, .(id), summarise, scored_value=2*((Q1+ 1.5*Q2)/2) + 2.5*((Q3+(2*Q4)+Q5)/3))