使用子集在具有特定日期的数据框中查找行

时间:2017-07-22 19:56:34

标签: r date conditional-statements subset

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

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)

现在我想根据日期找到一行 - 例如所有带日期&gt的行; 16/12/2006。

这是我的代码:

incrementByFive(0)

日期和时间的类别是因素和因素,但现在它们是日期和&#34; POSIXlt&#34; &#34; POSIXt&#34; 。当我执行subset-command时,Data1为空。

为什么呢?它应包含前2个数据集。

2 个答案:

答案 0 :(得分:1)

mvn -v
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=1024m; support was removed in 8.0
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T15:39:06-04:00)
Maven home: /usr/local/Cellar/maven/3.5.0/libexec
Java version: 1.8.0_141, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home/jre
Default locale: en_CA, platform encoding: UTF-8
OS name: "mac os x", version: "10.12.6", arch: "x86_64", family: "mac"

答案 1 :(得分:1)

转换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(...)

相关问题