过滤某些月份的 POSIXct 日期时间
Posted
技术标签:
【中文标题】过滤某些月份的 POSIXct 日期时间【英文标题】:Filter POSIXct date times for certain months 【发布时间】:2021-12-28 09:05:34 【问题描述】:我有一个包含 POSIXct 日期时间戳 ($acquisition_time) 的数据集。我需要过滤此数据集中所有日期时间戳为 6 月、7 月、8 月或 9 月的行。
这是我的数据样本:
> data
animals_id acquisition_time longitude latitude projection collar_type
1 1 2010-01-05 19:59:00 7.611712 47.94893 EPSG:4326-WGS48 gps
2 1 2010-02-06 02:59:00 7.611367 47.95333 EPSG:4326-WGS48 gps
3 1 2010-03-06 23:59:00 7.612298 47.95245 EPSG:4326-WGS48 gps
4 1 2010-03-07 20:59:00 7.621620 47.95849 EPSG:4326-WGS48 gps
5 1 2010-04-08 17:59:00 7.611142 47.95456 EPSG:4326-WGS48 gps
6 1 2010-04-09 00:59:00 7.619372 47.95881 EPSG:4326-WGS48 gps
7 1 2010-05-09 07:59:00 7.612473 47.95379 EPSG:4326-WGS48 gps
8 1 2010-06-10 04:59:00 7.613174 47.95429 EPSG:4326-WGS48 gps
9 1 2010-06-11 22:59:00 7.612589 47.95584 EPSG:4326-WGS48 gps
10 1 2010-07-12 19:59:00 7.613384 47.95734 EPSG:4326-WGS48 gps
11 1 2010-08-13 16:59:00 7.612884 47.95448 EPSG:4326-WGS48 gps
12 1 2010-08-13 23:59:00 7.614389 47.95932 EPSG:4326-WGS48 gps
13 1 2010-08-14 20:59:00 7.617362 47.96213 EPSG:4326-WGS48 gps
14 1 2010-09-15 03:59:00 7.612436 47.95579 EPSG:4326-WGS48 gps
15 1 2010-09-15 17:59:00 7.616448 47.95875 EPSG:4326-WGS48 gps
16 1 2010-09-16 01:00:00 7.611193 47.95464 EPSG:4326-WGS48 gps
17 1 2010-10-16 21:59:00 7.619343 47.96087 EPSG:4326-WGS48 gps
18 1 2010-10-18 01:59:00 7.619420 47.95877 EPSG:4326-WGS48 gps
19 1 2010-11-18 22:59:00 7.624575 47.95586 EPSG:4326-WGS48 gps
20 1 2010-12-19 12:59:00 7.615908 47.95812 EPSG:4326-WGS48 gps
21 1 2010-01-20 23:59:00 7.605586 47.93908 EPSG:4326-WGS48 gps
22 1 2010-02-21 20:59:00 7.627373 47.96214 EPSG:4326-WGS48 gps
23 1 2010-02-22 03:59:00 7.625065 47.95793 EPSG:4326-WGS48 gps
24 1 2010-02-22 17:59:00 7.614603 47.95174 EPSG:4326-WGS48 gps
25 1 2010-02-23 07:59:00 7.613502 47.95427 EPSG:4326-WGS48 gps
study_area_id animals_age_class animals_sex
1 13 s f
2 13 s f
3 13 s f
4 13 s f
5 13 s f
6 13 s f
7 13 s f
8 13 s f
9 13 s f
10 13 s f
11 13 s f
12 13 s f
13 13 s f
14 13 s f
15 13 s f
16 13 s f
17 13 s f
18 13 s f
19 13 s f
20 13 s f
21 13 s f
22 13 s f
23 13 s f
24 13 s f
25 13 s f
我尝试了以下代码,但出现错误:
data <- data$acquisition_time %>% filter(month(Year) %in% c(6,7,8,9))
Error in UseMethod("filter") :
no applicable method for 'filter' applied to an object of class "c('POSIXct', 'POSIXt')"
我该怎么做?
【问题讨论】:
假设您已经加载了lubridate
包,我认为您需要使用data %>% filter(month(acquisition_time) %in% c(6, 7, 8, 9))
过滤您的数据您所做的是尝试将filter
应用于向量。
你完全正确!谢谢它现在可以工作了
@benjamin 你能把你的评论放到答案中,以便 OP 可以接受吗?
【参考方案1】:
您的代码大部分是正确的,但是,您尝试将filter
应用于向量而不是数据框。正确的代码是(假设 lubridate
已加载:
data %>%
filter(month(acquisition_time) %in% c(6, 7, 8, 9))
【讨论】:
以上是关于过滤某些月份的 POSIXct 日期时间的主要内容,如果未能解决你的问题,请参考以下文章