首页 > 解决方案 > 将 csv 列数据类型从字符修改为数字以应用范围函数

问题描述

csv文件的内容如下: 包含汽车细节的数据集

这里的马力列默认是字符。当我在马力中应用范围函数时:

    sapply(Auto[,4],range)

出现以下错误消息:

    Error in Summary.factor(17L, na.rm = FALSE) : 

“范围”对因子没有意义

所以我试图将字符转换为数字:

   as.numeric(as.character(Auto$horsepower))

这会导致警告消息:

   NAs introduced by coercion 

在上述步骤之后,我也无法应用范围功能。如何在马力栏中使用范围功能?请注意,数据集包含一个字符“?” 在马力列第 127 行。

标签: rrstudiosapplyread.csv

解决方案


你需要这个:

range(as.numeric(as.character(Auto$horsepower)), na.rm=TRUE)

如果要将看起来像数字的因子转换为实际的数字,使用 . 是正确的as.numeric(as.character())。对你来说,这引入了 NA,因为你有像“?”这样的值。在 for 的列中horsepower,R 不知道如何打开“?” 变成一个数字,所以它把它变成一个 NA。

现在,您可以计算range,但您需要告诉range“跳过”带有参数的 NA na.rm=TRUE


推荐阅读