我是R的初学者,我在R中遇到了一个时间列。 我有一个有多列的数据,其中一列有日期和时间,如
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
列过滤我的数据,但我的过滤器仅使用年份。
我试过了:
b <- year(historiceventstbl$origintime)
head(b)
#[1] 2017 2017 2017 2017 2017 2017
我不确定,怎么离开这里。
答案 0 :(得分:1)
我们可以使用filter
dplyr
library(dplyr)
library(lubridate)
df1 %>%
filter(year(Originaltime)==1963)
# Originaltime magnitude depth
#1 1963-09-02T23:16:55.510Z 3.767 12
#2 1963-08-29T16:46:25.520Z 3.727 12
或使用subset
base R
subset(df1, year(Originaltime)==1963)
或仅使用base R
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
答案 1 :(得分:0)
您也可以仅使用base R
对数据进行尝试:
df[substring(as.character(df$Originaltime), 1, 4) == 2017,]
# Originaltime magnitude depth
#1 2017-01-10T16:42:23.247Z 4.6 18.8