【发布时间】:2017-04-27 00:24:56
【问题描述】:
我有一些调查数据得出李克特 5 点量表。但是,在某些响应列中,缺少某些因素。这是数据:
提高学生参与度,提高教学时间效率 增加,增加学生的信心,提高学生的表现 在课堂作业中,增加了学生的学习,增加了独特性 学习活动
非常同意,非常同意,非常同意,非常同意,非常同意 同意,非常同意
不同意也不反对,不同意也不反对,不同意 不反对,不同意也不反对,不同意也不反对 不同意,不同意也不反对
不同意,非常不同意,不同意也不同意 不同意,不同意,不同意,既不同意也不反对
如您所见,某些响应列缺少一些因素,例如在第一列中,缺少同意和强烈反对(为简单起见,我粘贴了实际数据集的子集)
我在 R 中使用以下代码:
facultyData <- read_excel("FacultyResponsesForR.xlsx")
facultyData[] <- lapply( facultyData, factor)
facultyData[1:6] <- lapply( facultyData[1:6], factor, levels=1:5)
likertData <- likert(facultyData, nlevels = 5)
plot(likertData)
但是,这会导致以下错误:
Error in mean(as.numeric(items[, i]), na.rm = TRUE) :
(list) object cannot be coerced to type 'double'
我已经尝试过其他帖子中提到的解决方案(代码facultyData[] <- lapply(facultyData[], factor, levels=1:5)注释行中的那个),但它也不起作用
显然,在执行此 lappy 之前,数据包含:
# A tibble: 14 × 1
`Increased student engagement`
<fctr>
1 Strongly agree
2 Agree
3 Agree
4 Agree
5 Agree
6 Agree
7 Agree
8 Agree
9 Agree
10 Neither agree nor disagree
11 Neither agree nor disagree
12 Neither agree nor disagree
13 Neither agree nor disagree
14 Disagree
执行后,数据会被 NA 值覆盖吗?为什么会这样?
> facultyData[1:6] <- lapply( facultyData[1:6], factor, levels=1:5)
> facultyData[,1]
# A tibble: 14 × 1
`Increased student engagement`
<fctr>
1 NA
2 NA
3 NA
4 NA
5 NA
6 NA
7 NA
8 NA
9 NA
10 NA
11 NA
12 NA
13 NA
14 NA
如下更改代码后,数据被保留(不会变成NA,但我得到同样的错误)
mylevels <- c('Strongly disagree', 'Disagree', 'Neither agree nor disagree', 'Agree', 'Strongly agree')
facultyData <- read_excel("FacultyResponsesForR.xlsx")
facultyData[] <- lapply( facultyData, factor)
facultyData[1:6] <- lapply( facultyData[1:6], factor, levels=mylevels)
这个解决方案对我不起作用 - https://github.com/jbryer/likert/blob/master/demo/UnusedLevels.R
【问题讨论】: