【问题标题】:Automatically Find Best Class for Column in Data Frame Based on Values in this Column in R根据R中此列中的值自动查找数据框中列的最佳类
【发布时间】:2021-12-27 08:28:40
【问题描述】:

我有一个数据框,其中所有列都有字符类。我想自动将每一列的类转换为最适合数据的类。

考虑以下示例数据:

data <- data.frame(x1 = letters[1:5],
                   x2 = as.character(1:5),
                   x3 = as.character(seq(0.2, 1, 0.2)))
data
  x1 x2  x3
1  a  1 0.2
2  b  2 0.4
3  c  3 0.6
4  d  4 0.8
5  e  5   1

我们示例数据中的所有列都有字符类:

sapply(data, class)
#          x1          x2          x3 
# "character" "character" "character"

我可以手动将每一列转换为所需的类。但是,对于大型数据集,这可能效率不高。

有没有办法自动扫描每一列中的值,并将对应的列转换为更好的类?

在此示例中,x2 列包含整数,x3 列包含数字。因此,所需的类看起来像这样:

sapply(data, class)
#          x1          x2          x3 
# "character"   "integer"   "numeric"

【问题讨论】:

    标签: r class type-conversion data-manipulation


    【解决方案1】:

    使用type.convert()as.is=TRUE 可防止将字符强制转换为因子。

    data <- data |> type.convert(as.is=TRUE)
    
    str(data)    
    # 'data.frame': 5 obs. of  3 variables:
    # $ x1: chr  "a" "b" "c" "d" ...
    # $ x2: int  1 2 3 4 5
    # $ x3: num  0.2 0.4 0.6 0.8 1
    

    R

    data <- type.convert(data, as.is=TRUE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-18
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      • 2015-10-24
      • 1970-01-01
      相关资源
      最近更新 更多