按日期子集数据

时间:2013-01-23 02:49:00

标签: r date subset

我有一个名为EPL2011_12的数据集。我想通过按日期对原始进行子集来制作新的数据集。日期位于名为Date的列中。日期采用DD-MM-YY格式。

我试过了

EPL2011_12FirstHalf <- subset(EPL2011_12, Date > 13-01-12)

EPL2011_12FirstHalf <- subset(EPL2011_12, Date > "13-01-12")

但每次都会收到此错误消息。

Warning message:
In Ops.factor(Date, 13- 1 - 12) : > not meaningful for factors

我想这意味着R正在处理文本而不是数字,以及为什么它不起作用?

2 个答案:

答案 0 :(得分:39)

嗯,它显然不是一个数字,因为它已经破灭了。错误消息和两条评论告诉你这是一个因素,但评论员显然在等待并让消息陷入其中.Dirk建议你这样做:

 EPL2011_12$Date2 <- as.Date( as.character(EPL2011_12$Date), "%d-%m-%y")

之后你可以这样做:

 EPL2011_12FirstHalf <- subset(EPL2011_12, Date2 > as.Date("2012-01-13") )

R日期函数假定格式为“YYYY-MM-DD”或“YYYY / MM / DD”。您需要比较类似的类:日期到日期,或字符到字符。

答案 1 :(得分:6)

您应该对日期变量做的第一件事是确认R将其作为日期读取。为此,对于名为Date的变量(即向量/列),在名为EPL2011_12的数据框中输入

class(EPL2011_12$Date)

输出应为[1]“日期”。如果没有,您应该通过输入

将其格式化为日期

EPL2011_12$Date <- as.Date(EPL2011_12$Date, "%d-%m-%y")

请注意,上面的日期格式(“%d-%m-%y”)中的连字符也可以是斜杠(“%d /%m /%y”)。确认R将其视为日期。如果没有,请尝试不同的格式化命令

EPL2011_12$Date <- format(EPL2011_12$Date, format="%d/%m/%y")

以日期格式获得后,您可以使用subset命令,也可以使用括号

WhateverYouWant <- EPL2011_12[EPL2011_12$Date > as.Date("2014-12-15"),]