【发布时间】:2020-12-07 13:06:35
【问题描述】:
我有一组使用李克特量表响应的调查数据,编码为 1-5(“非常不同意”到“非常同意”)。我正在尝试将分数重新集中在 0 附近,这样 -2 表示“非常不同意”,+2 表示“非常同意”。
到达那里的一个明显方法是将所有列减去 3,但我不知道在一行代码中从多列中减去相同的数字,我相信有一种方法......
示例数据:
likert_data <- data.frame(id=c(1:10),
a=sample(x = 1:5, size = 10,replace=T),
b=sample(x = 1:5, size = 10,replace=T),
c=sample(x = 1:5, size = 10,replace=T)
)
我当然可以做这样的事情......
likert_data %<>%
mutate(across(c(a:c), ~case_when(. == 1 ~ as.numeric(-2),
. == 2 ~ as.numeric(-1),
. == 3 ~ as.numeric(0),
. == 4 ~ as.numeric(1),
. == 5 ~ as.numeric(2))))
...不过我觉得不是很优雅。
有没有办法将列 a:c 减去 3?不必使用dplyr,但如果存在dplyr 解决方案,我将不胜感激! :)
【问题讨论】: