我正在使用Data <- read.table("file", head=TRUE, sep=";")
来阅读我的文件。
我的文件的head
如下所示:
Date Time Global_active_power Global_reactive_power Voltage Global_intensity
66637 2007-02-01 00:00:00 0.326 0.128 243.150 1.400
66638 2007-02-01 00:01:00 0.326 0.130 243.320 1.400
66639 2007-02-01 00:02:00 0.324 0.132 243.510 1.400
66640 2007-02-01 00:03:00 0.324 0.134 243.900 1.400
66641 2007-02-01 00:04:00 0.322 0.130 243.160 1.400
66642 2007-02-01 00:05:00 0.320 0.126 242.290 1.400
Sub_metering_1 Sub_metering_2 Sub_metering_3
66637 0.000 0.000 0
66638 0.000 0.000 0
66639 0.000 0.000 0
66640 0.000 0.000 0
66641 0.000 0.000 0
66642 0.000 0.000 0
但是,如果我尝试typeof(Data$Global_reactive_power)
,则会显示integer
(应为numeric
)。
我不明白为什么会这样。我尝试了很多方法,但不知怎的,它们都不起作用,任何人都能帮助我吗?
我的档案在这里: https://d396qusza40orc.cloudfront.net/exdata%2Fdata%2Fhousehold_power_consumption.zip
答案 0 :(得分:4)
您的原始数据似乎是“?”对于缺失值。我看了一下
is.not.numeric<-function(x) {
is.na(as.numeric(as.character(x)))
}
head(Filter(is.not.numeric, Data$Global_reactive_power))
当R遇到非数字值时,例如“?”在列中,它将列强制为一个因子。为了正确阅读您的数据,请尝试
Data<-read.table("household_power_consumption.txt",
header=TRUE, sep=";", na.strings="?")
现在
class(Data$Global_reactive_power)
# [1] "numeric"
显示它是数字。 (请注意,您永远不应该使用typeof
。这会告诉您如何存储对象的数据,它不会告诉您对象是什么。使用{{1对于那个)。
答案 1 :(得分:3)
您的Global_reactive_power
列中包含一些非数字条目,导致read.table
将其转换为因子。请注意,typeof(factor)
为integer
。
在文本编辑器中打开文件,查找非严格数字的条目。如果您的数据来自Excel,请确保在导出到文本之前从列(日期除外)中删除所有格式。