我有一组使用李克特量表响应的调查数据,编码为 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)
)
Run Code Online (Sandbox Code Playgroud)
我当然可以做这样的事情......
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))))
Run Code Online (Sandbox Code Playgroud)
...但我认为这不是很优雅。
有没有办法将列减a:c3?不一定要使用,但如果存在解决方案,dplyr我真的很感激!dplyr:)