【问题标题】:R: Encoding categorical data using across()R:使用cross()对分类数据进行编码
【发布时间】:2021-04-16 11:54:07
【问题描述】:

我有一个具有字符类型特征的数据集(并非所有都是二进制的,其中一个代表一个区域)。

为了避免多次使用该函数,我尝试使用管道和 cross() 来识别所有字符类型的列,并使用创建的函数对其进行编码。

encode_ordinal <- function(x, order = unique(x)) {
  x <- as.numeric(factor(x, levels = order, exclude = NULL))
  x
}

dataset <- dataset %>% 
  encode_ordinal(across(where(is.character)))

但是,当我收到错误时,我似乎没有正确使用cross():

错误:across() 只能在 dplyr 动词中使用。

我想知道我是否过于复杂,有一种更简单的方法可以实现这一点,即识别字符类型的所有特征并对其进行编码。

【问题讨论】:

    标签: r encoding pipeline categorical-data dummy-variable


    【解决方案1】:

    您应该在mutate 中调用acrossencode_ordinal,如下例所示:

    dataset <- tibble(x = 1:3, y = c('a', 'b', 'b'), z = c('A', 'A', 'B'))
    # # A tibble: 3 x 3
    #       x y     z    
    #   <int> <chr> <chr>
    # 1     1 a     A    
    # 2     2 b     A    
    # 3     3 b     B    
    
    dataset %>%
        mutate(across(where(is.character), encode_ordinal))
    # # A tibble: 3 x 3
    #       x     y     z
    #   <int> <dbl> <dbl>
    # 1     1     1     1
    # 2     2     2     1
    # 3     3     2     2
    

    【讨论】:

      猜你喜欢
      • 2016-10-23
      • 1970-01-01
      • 2018-10-01
      • 2021-10-21
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 2019-12-19
      • 1970-01-01
      相关资源
      最近更新 更多