r - 将 csv 列数据类型从字符修改为数字以应用范围函数
问题描述
这里的马力列默认是字符。当我在马力中应用范围函数时:
sapply(Auto[,4],range)
出现以下错误消息:
Error in Summary.factor(17L, na.rm = FALSE) :
“范围”对因子没有意义
所以我试图将字符转换为数字:
as.numeric(as.character(Auto$horsepower))
这会导致警告消息:
NAs introduced by coercion
在上述步骤之后,我也无法应用范围功能。如何在马力栏中使用范围功能?请注意,数据集包含一个字符“?” 在马力列第 127 行。
解决方案
你需要这个:
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
。
推荐阅读
- python - 在python中,我可以将日志写入控制台,但不会写入文件
- javascript - 用 JS 脚本突出显示我的复选框的边框
- kotlin - 是否可以让 recyclerview/listview 导航到不同的屏幕?
- java - 如何从首选项同步 getter 和 setter?
- python - 带有列表索引Python的for循环
- java - Spring Retry - 异常问题和重试
- javascript - 我无法将添加的高度固定到组件中
- node.js - 选择在 Mongoose 中填充的字段
- c# - 如何在数据表中排列 DataRow 序列?
- spring-boot - 为什么 @EntityGraph 从 Spring 2.2.5 版开始不加载 EAGER?