我使用R使用read.table("url",..)
从文本文件中读取数据。在文本文件中,它们是日期和时间变量,但这些变量的类是因子。现在我需要将它转换为DateTime类。我使用了很多方法,但是当我做的时候,我可以看到这些变量的所有数据都是NA。
mydata <- read.table("C:/household_power_consumption.txt", header=TRUE, sep=";", na.strings="?" )
mydata$Date<-strptime(x=as.character(mydata$Date),format="%d/%m/%Y %H:%M")
sub1<-subset(mydata,mydata$Date>=as.POSIXct("01/02/2006") & mydata$Date<=as.POSIXct("02/02/2006"))
这是一些示例数据
Date Time D1 D2 D3
16/12/2006 17:26:00 5.374 0.498 233.290
16/12/2006 17:27:00 5.388 0.502 233.740
16/12/2007 17:28:00 3.666 0.528 235.680
需要获取2006年12月16日至2007年12月16日之间的数据
答案 0 :(得分:0)
finalData <- mydata[mydata$Date %in% c("1/2/2007","2/2/2007"),]
SetTime <-strptime(paste(finalData$Date, finalData$Time, sep=" "),"%d/%m/%Y %H:%M:%S")
finalData <- cbind(SetTime, finalData)
答案 1 :(得分:0)
我很高兴你设法以你想要的方式工作。应该注意的是,通过搜索字符串而不是日期,过滤任何大于2天的日期范围要困难得多(例如:原始问题中概述的情况)。
还应该注意到OP向我发送了完整的数据文件,这段代码对我来说非常合适,但对他们来说并非如此(我们都在R 3.3.0上):
mydata <- read.table("household_power_consumption.txt", header=TRUE, sep=";", na.strings="?", stringsAsFactors=F )
mydata$Date<-as.Date( mydata$Date, format="%d/%m/%Y" )
sub1<-subset(mydata,mydata$Date>=as.Date("2007-02-01") & mydata$Date<=as.Date("2007-02-02"))
然后可以轻松更改最后一行以匹配您之后的日期范围:
sub1<-subset(mydata,mydata$Date>=as.Date("2006-12-16") & mydata$Date<=as.Date("2007-12-16"))
另外,来自fread
的{{1}}可将读取时间加快一个数量级,并消除了对data.table
的需求:
stringsAsFactors=F