目前,我正在将我的李克特类型刻度重新编码为数值。但是,我在此数据集中有许多来自多个不同比例的项目。例如:Q2.1_1:Q2.1_16是一个具有李克特量表的量表,其密钥与其他调查的密钥不同。目前,我手动输入每个重新编码:
final$Q2.1_1rc <- as.numeric(recode(
final$Q2.1_1,
"Very slightly or not at all" = 1,
"A little" = 2,
"Moderately" = 3,
"Quite a bit" = 4,
"Extremely" = 5
))
然后是C / P并继续更改变量的名称。但是,我有一个大型数据集,因此手动执行此操作将非常麻烦。任何人都可以用更短的方式来帮我解决这个问题吗?有没有帮助的包?也许是一个功能?
谢谢!
答案 0 :(得分:0)
您可以一次重新编码多个变量的一种方法是使用mutate_at
包中的dplyr
函数。
示例数据
library(dplyr)
set.seed(123)
resp <- c("Very slightly or not at all", "A little", "Moderately", "Quite a bit", "Extremely")
final <- tibble(Q2.1_1 = sample(resp, 6, replace = TRUE),
Q2.2_1 = sample(resp, 6, replace = TRUE))
<强>解决方案强>
假设您要在final
中开始的变量在变量名称的开头都有"Q2"
,您可以这样做:
final %>%
mutate_at(vars(starts_with("Q2")),
funs("rc" = recode(.,
"Very slightly or not at all" = 1,
"A little" = 2,
"Moderately" = 3,
"Quite a bit" = 4,
"Extremely" = 5)))
#> # A tibble: 6 x 4
#> Q2.1_1 Q2.2_1 Q2.1_1_rc Q2.2_1_rc
#> <chr> <chr> <dbl> <dbl>
#> 1 A little Moderately 2 3
#> 2 Quite a bit Extremely 4 5
#> 3 Moderately Moderately 3 3
#> 4 Extremely Moderately 5 3
#> 5 Extremely Extremely 5 5
#> 6 Very slightly or not at all Moderately 1 3
正如official documentation中所述,开始使用dplyr
的最佳位置是 R for Data Science 一书的data import chapter,而具体示例则相关使用mutate_at
可以找到here。