在R中按日期过滤数据框

时间:2014-02-04 15:41:16

标签: r date subset

在R中,我已将选项卡分隔的文本文件中的数据导入data.frame。 该表如下所示:

latitude longitude date         temperature
-------- --------- ------       -----------
50.45989 15.363366 "2014-01-29" -14.4
50.00911 15.323255 "2014-01-30" -10.2
50.88900 15.440032 "2014-01-29" -14.4

当我写命令时:

str(mydata)

我得到以下结果:

'data.frame':   211931 obs. of  10 variables:
$ latitude      : num  50.8 50.8 50.8 50.8 50.8 ...
$ longitude: num  15.6 15.6 15.6 15.6 15.6 ...
$ date : Factor w/ 581 levels "2012-07-01","2012-07-02",..: 1 2 3 4 5 6 7 8 9 10 ...
$ temperature  : num  -14.4.6 -15.5 -10.1 -9.2 NA ...

我想创建一个数据框的子集,其中只包含日期等于2014年1月29日的行。如何在R中执行此操作?

我尝试了命令:

datefilter = as.Date("2014-01-29")
selection = mydata[mydata[date]==datefilter]

但是R抱怨:无法将类型“因素”转换为“日期”。

2 个答案:

答案 0 :(得分:2)

正如str()的输出告诉您的那样,您的日期列已被读入R作为因子,而不是日期列。实际上,您明确指出的错误消息是“无法转换类型”因素“到”日期“”。当然,并不是因为它不可能,R只能自动完成,因为日期可以是任意数量的不同格式。

因此,您只需将日期列转换为实际日期格式即可。你想做的事:

mydata$date <- as.Date(mydata$date)

另一条路线是在数据导入时处理转换。这可以通过colClasses的{​​{1}}参数来完成,在您的情况下,您似乎想要使用类似的内容:

read.table

答案 1 :(得分:0)

我认为这段代码应该可以工作:

library(dplyr)
desired.subset <- data.frame %>% filter(date == '2014-01-14')
相关问题