在R中筛选timedate列

在R中筛选timedate列,r,R,我是R的初学者,在R中有一个timedate列。 我有一个数据,它有多个列,其中一列有日期和时间 Originaltime magnitude depth 2017-01-10T16:42:23.247Z 4.6 18.8 1963-09-02T23:16:55.510Z 3.767 12 1963-08-29T16:46:25.520Z 3.727 12 我想使用originaltime

我是R的初学者,在R中有一个timedate列。 我有一个数据,它有多个列,其中一列有日期和时间

Originaltime               magnitude     depth
2017-01-10T16:42:23.247Z   4.6            18.8
1963-09-02T23:16:55.510Z   3.767          12
1963-08-29T16:46:25.520Z   3.727          12
我想使用originaltime列筛选数据,但仅使用year作为筛选条件

我试过:

b <- year(historiceventstbl$origintime)
head(b)
#[1] 2017 2017 2017 2017 2017 2017
我不确定,从这里怎么走

我们可以使用dplyr的过滤器

或者使用基R的子集

或者只使用基本R

操作时间时最好使用日期时间函数,因此

subset(df1, format(as.POSIXct(Originaltime, format = "%Y-%m-%dT%H:%M:%OS"), "%Y") == 1963)
#             Originaltime magnitude depth
#2 1963-09-02T23:16:55.510Z     3.767    12
#3 1963-08-29T16:46:25.520Z     3.727    12

您也可以仅使用base R对数据执行此操作:

历史事件TBL[年度历史事件TBL$origintime==2017,]?
subset(df1, year(Originaltime)==1963)
subset(df1, sub("^(.{4}).*", "\\1", Originaltime)==1963)
#              Originaltime magnitude depth
#2 1963-09-02T23:16:55.510Z     3.767    12
#3 1963-08-29T16:46:25.520Z     3.727    12
subset(df1, format(as.POSIXct(Originaltime, format = "%Y-%m-%dT%H:%M:%OS"), "%Y") == 1963)
#             Originaltime magnitude depth
#2 1963-09-02T23:16:55.510Z     3.767    12
#3 1963-08-29T16:46:25.520Z     3.727    12
df[substring(as.character(df$Originaltime), 1, 4) == 2017,]
#              Originaltime magnitude depth
#1 2017-01-10T16:42:23.247Z       4.6  18.8