在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抱怨:无法将类型“因素”转换为“日期”。
答案 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')