【问题标题】:Automatically assigning shorter column names to large dataset and retaining original names as labels自动将较短的列名称分配给大型数据集并保留原始名称作为标签
【发布时间】:2023-02-09 18:18:01
【问题描述】:

我有一个包含大约 200 列的大型数据集。原始文件在 Excel 中,第一行包含变量名称。变量名称都是调查问题,因此使用起来有点笨拙(例如“你目前的体重是多少?”)

我用过了:

df = read_excel("file.xlsx", sheet = 1)

这很好,但我最终得到了很长的列名,很难使用。

由于有很多列,是否有任何方法可以自动为每一列分配一个简短且易于管理的名称,同时保留原始全名作为标签?

【问题讨论】:

    标签: r excel label survey


    【解决方案1】:

    一种方法是创建和使用一个简单的查找向量,并将长名称重命名为“Q1”、“Q2”等,并在需要时将名称改回:

    下面是一种使用 dplyr 的方法(对于其他方法,我写了一个 blog post 涵盖基础 R、data.table 和 python)。

    library(dplyr)
    
    # create a lookup vector
    lookup_vec <- setNames(names(iris),
                           paste0("Q", seq_along(iris)))
    
    # rename columns to have short names when working with the data
    iris2 <- iris %>% 
      rename(any_of(lookup_vec))
    
    iris2 %>% glimpse()
    #> Rows: 150
    #> Columns: 5
    #> $ Q1 <dbl> 5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9, 5.4, 4.8, 4.8, 4.~
    #> $ Q2 <dbl> 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.4, 3.0, 3.~
    #> $ Q3 <dbl> 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.6, 1.4, 1.~
    #> $ Q4 <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.2, 0.2, 0.1, 0.~
    #> $ Q5 <fct> setosa, setosa, setosa, setosa, setosa, setosa, setosa, setosa, set~
    
    # change names back for output reports
    lookup_vec2 <- setNames(names(lookup_vec), lookup_vec)
    
    iris %>% 
      rename(any_of(lookup_vec2)) %>% 
      glimpse() # for better printing
    #> Rows: 150
    #> Columns: 5
    #> $ Sepal.Length <dbl> 5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9, 5.4, 4.~
    #> $ Sepal.Width  <dbl> 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.~
    #> $ Petal.Length <dbl> 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.~
    #> $ Petal.Width  <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.2, 0.~
    #> $ Species      <fct> setosa, setosa, setosa, setosa, setosa, setosa, setosa, s~
    

    reprex package (v2.0.1) 创建于 2023-02-09

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-23
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      相关资源
      最近更新 更多