Gin*_*ger 4 r numeric read.table
我在用 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
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试typeof(Data$Global_reactive_power)显示integer(应该是numeric)。
我不明白为什么会这样。我尝试了很多方法,但不知何故它们都不起作用,有人可以帮我吗?
我的文件在这里:https : //d396qusza40orc.cloudfront.net/exdata%2Fdata%2Fhousehold_power_consumption.zip
看来你的原始数据为“?” 对于缺失值。我通过使用查看
is.not.numeric<-function(x) {
is.na(as.numeric(as.character(x)))
}
head(Filter(is.not.numeric, Data$Global_reactive_power))
Run Code Online (Sandbox Code Playgroud)
当 R 遇到非数字值,例如“?” 在列中,它将列强制为一个因子。为了正确读取数据,请尝试
Data<-read.table("household_power_consumption.txt",
header=TRUE, sep=";", na.strings="?")
Run Code Online (Sandbox Code Playgroud)
现在
class(Data$Global_reactive_power)
# [1] "numeric"
Run Code Online (Sandbox Code Playgroud)
显示它是数字。(请注意,您永远不应该真正需要使用typeof。它会告诉您对象的数据是如何存储的,它不会告诉您对象是什么。class()用于此目的)。