默认情况下,列功率为字符。当我将范围函数应用于马力中时:
sapply(Auto[,4],range)
出现以下错误消息:
Error in Summary.factor(17L, na.rm = FALSE) :
“范围”对因素没有意义
所以我试图将字符隐蔽为数字:
as.numeric(as.character(Auto$horsepower))
这将导致警告消息:
NAs introduced by coercion
在完成上述步骤后,我也无法应用范围功能。 如何在马力栏中使用范围功能?请注意,数据集包含字符“?”在功率列第127行中。
答案 0 :(得分:1)
您需要这个:
<div>
<select>
<option value="08/27/2018 - 08/31/2018">08/27/2018 - 08/31/2018</option>
<option value="09/10/2018 - 09/14/2018">09/10/2018 - 09/14/2018</option>
</select>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
如果要将数值因子转换为实际数值,则使用range(as.numeric(as.character(Auto$horsepower)), na.rm=TRUE)
是正确的。对您来说,这引入了NA,因为您具有诸如“?”之类的值。 as.numeric(as.character())
的列中,R不知道如何将“?”转换为数字,因此将其转换为NA。
现在,您可以计算horsepower
,但是需要告诉range
使用参数range
“跳过” NA。
答案 1 :(得分:1)
此处的根本问题是,将CSV文件读入R时,horsepower
被转换为一个因子。这是由于存在?
字符所致。
您可以使用例如
避免这种情况Auto <- read.csv("myfile.csv",
stringsAsFactors = FALSE,
na.strings = "?")