如何在 R 中缩短 SPSS 文件的超长变量标签?

问题描述 投票:0回答:1

背景:

  • 我有来自一项大型调查的数据(来自 Qualtrics 调查,导出为 SPSS、.sav 文件格式)。
  • 总共有 648 个变量,因为大多数问题都是“检查所有适用的”或排名响应,其中每个选项都显示为二进制变量。
  • 200 个变量(用于排名响应问题)的变量标签非常长且麻烦。每个标签的前 150 个左右单词都是相同的,包含问题的解释文本,然后标签的最后 2-5 个单词不同,包含该变量的唯一信息。
  • 当前使用haven和labeled包来读取.sav文件并创建数据字典。

问题: 我希望能够从所有这 200 个相同的变量标签中删除文本,只留下末尾的唯一单词。

我现在在哪里:

我能够在这里找到所有 200 个感兴趣的变量名称,因为它们都包含“RANK”,如下所示:

colnames(
  look_for_and_select(data,
                      "RANK",labels=FALSE,
                      values=FALSE,
                      ignore.case=FALSE),
  )

我在搜索中找到的所有内容都是替换或添加新变量标签的函数,但我需要能够保留标签中已有的唯一文本。我想也许有一种方法可以使用 gsub()...但我会感激任何想法或帮助!

r spss
1个回答
0
投票
library(tidyverse)

创建一个数据框,其变量名称与您的描述类似。

same <- "long_variable_name_part_that_is_always_the_same"

var_names <- paste(same, "var", 1:10, sep = "_")

df <- 
  var_names |> 
  lapply(\(x) tibble(a = 1:10) |> set_names(x)) |> 
  bind_cols()

df
#> # A tibble: 10 × 10
#>    long_variable_name_part_that_…¹ long_variable_name_p…² long_variable_name_p…³
#>                              <int>                  <int>                  <int>
#>  1                               1                      1                      1
#>  2                               2                      2                      2
#>  3                               3                      3                      3
#>  4                               4                      4                      4
#>  5                               5                      5                      5
#>  6                               6                      6                      6
#>  7                               7                      7                      7
#>  8                               8                      8                      8
#>  9                               9                      9                      9
#> 10                              10                     10                     10
#> # ℹ abbreviated names: ¹​long_variable_name_part_that_is_always_the_same_var_1,
#> #   ²​long_variable_name_part_that_is_always_the_same_var_2,
#> #   ³​long_variable_name_part_that_is_always_the_same_var_3
#> # ℹ 7 more variables:
#> #   long_variable_name_part_that_is_always_the_same_var_4 <int>,
#> #   long_variable_name_part_that_is_always_the_same_var_5 <int>,
#> #   long_variable_name_part_that_is_always_the_same_var_6 <int>, …

我们可以使用

dplyr::rename_with()
以编程方式重命名中的所有变量
df

df |> 
  rename_with(\(x) str_remove(x, "long_variable_name_part_that_is_always_the_same_"))
#> # A tibble: 10 × 10
#>    var_1 var_2 var_3 var_4 var_5 var_6 var_7 var_8 var_9 var_10
#>    <int> <int> <int> <int> <int> <int> <int> <int> <int>  <int>
#>  1     1     1     1     1     1     1     1     1     1      1
#>  2     2     2     2     2     2     2     2     2     2      2
#>  3     3     3     3     3     3     3     3     3     3      3
#>  4     4     4     4     4     4     4     4     4     4      4
#>  5     5     5     5     5     5     5     5     5     5      5
#>  6     6     6     6     6     6     6     6     6     6      6
#>  7     7     7     7     7     7     7     7     7     7      7
#>  8     8     8     8     8     8     8     8     8     8      8
#>  9     9     9     9     9     9     9     9     9     9      9
#> 10    10    10    10    10    10    10    10    10    10     10
© www.soinside.com 2019 - 2024. All rights reserved.