重新编码多个李克特量表 - 任何包裹?

时间:2017-09-30 18:30:02

标签: r statistics recode

目前,我正在将我的李克特类型刻度重新编码为数值。但是,我在此数据集中有许多来自多个不同比例的项目。例如: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并继续更改变量的名称。但是,我有一个大型数据集,因此手动执行此操作将非常麻烦。任何人都可以用更短的方式来帮我解决这个问题吗?有没有帮助的包?也许是一个功能?

谢谢!

1 个答案:

答案 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