首页 > 解决方案 > 使用变量 R dplyr 设置数据框的标签

问题描述

我有一个数据框,我想在其中更改标签,如下所示:

  library(labelled)
  tmp <- diamonds %>% mutate(color = as.character(color)) %>%
    set_value_labels(color = c(E = "white", I = "Red", J = "Black"))

这可行,但我想以编程方式构造标签集(在我的情况下来自数据库表)。例如:

  cols <- c("White", "Red", "Black")
  letters <- c("E", "I", "J")
  
  # create the labels vector
  new_labels <- c()
  for(x in 1:3){
    new_labels <- c(new_labels, paste(letters[x], "=", cols[x]))
  }
  
  tmp <- diamonds %>% mutate(color = as.character(color)) %>%
    set_value_labels(color = new_labels)

错误:labels必须有名字。

如何以 set_values_labels 可以理解的格式构建 new_labels 向量?或者不使用库(标记)

标签: rdplyrlabel

解决方案


您可以使用创建命名向量setNames并将其传递给 set_value_labels.

library(dplyr)
library(labelled)

cols <- c("White", "Red", "Black")
letters <- c("E", "I", "J")


tmp <- diamonds %>% 
  mutate(color = as.character(color)) %>%
  set_value_labels(color = setNames(cols, letters)) 

推荐阅读