查找一个数据帧行与某一特定日期使用子集(Find rows in a dataframe with

2019-10-29 18:19发布

我有一个数据帧的日期,包括日期,时间和值:

  Date         Time         Global_active_power
  16/12/2006   17:24:00     4.216
  16/12/2006   18:25:00     4.5
  17/12/2006   17:25:00     4.52
  18/12/2006   17:25:00     4.557

现在我想找到根据日期的行 - 例如使用日期> 16/12/2006所有行。

这是我的代码:

Data$Date<- as.Date(Data$Date,"%dd%mm%yyyy" )
Data$Time<-strptime(Data$Time, "%h%m%s")
print(class(Data$Date))
print(class(Data$Time))
Data1<-subset(Data, (Date=="16/12/2006" ))
View(Data1)

该类日期和时间分别为因素和因素,但现在他们是日期和“POSIXlt”“POSIXt”。 当我做了子命令,数据1是空的。

为什么? 它应该包含第2个集。

Answer 1:

Data$Date<- as.Date(Data$Date,"%d/%m/%Y" ) # date format now 'yyyy-mm-dd'
Data$Time <- as.POSIXct(strptime(Data$Time, "%H:%M:%S"))
print(class(Data$Date))
print(class(Data$Time))

Data1 <- subset(Data, Date > "2006-12-16") 

View(Data1)


Answer 2:

有与转换问题Time变量。 由于它没有日期,只是一个时间,当你申请strptime ,它会自动插入今天的日期。 这显然不是你想要的。 我认为最好的解决方案是创建一个新的列, DateTime

Data$Date <- as.Date(Data$Date, "%d/%m/%Y")

# See the output date (today)
strptime(Data$Time, "%H:%M:%S")
[1] "2017-07-22 17:24:00 BST" "2017-07-22 18:25:00 BST"
[3] "2017-07-22 17:25:00 BST" "2017-07-22 17:25:00 BST"

DateTime <- paste(Data$Date, Data$Time)
DateTime
[1] "2006-12-16 17:24:00" "2006-12-16 18:25:00" "2006-12-17 17:25:00"
[4] "2006-12-18 17:25:00"

Data$DateTime <- as.POSIXct(DateTime, format = "%Y-%m-%d %H:%M:%S")

Data1 <- subset(Data, Date > as.Date("2006-12-16"))
View(Data1)

如果你想保持数据/时间相关的变量在一起,你可以调换第3和4。

Data <- Data[, c(1, 2, 4, 3)]
Data
        Date     Time            DateTime Global_active_power
1 2006-12-16 17:24:00 2006-12-16 17:24:00               4.216
2 2006-12-16 18:25:00 2006-12-16 18:25:00               4.500
3 2006-12-17 17:25:00 2006-12-17 17:25:00               4.520
4 2006-12-18 17:25:00 2006-12-18 17:25:00               4.557

只有这样,你将Data1 <- subset(...)



文章来源: Find rows in a dataframe with a certain date using subset