我可以直接从POSIXct日期时间分配特定的年份和月份吗?

时间:2014-04-11 01:40:40

标签: r

我有时间序列数据,我正在尝试将以下内容分组:

1)特定年份之间的时期(从1月1日12点开始到12月31日结束11点) 2)没有特定月份的时期

这是我想要做的两个独立的子集。

鉴于以下数据框:

test <- data.frame(seq(from = as.POSIXct("1983-03-09 01:00"), to = as.POSIXct("1985-01-08 00:00"), by = "hour"))
colnames(test) <- "DateTime"
test$Value<-sample(0:100,16104,rep=TRUE)

我可以先创建YearMonth列,并将这些列用于子集:

# Add year column
test$Year <- as.numeric(format(test$DateTime, "%Y"))

# Add month column
test$Month <- as.numeric(format(test$DateTime, "%m"))

# Subset specific year (1984 in this case)
sub1 = subset(test, Year!="1983" & Year!="1985")

# Subset specific months (April and May in this case)
sub2 = subset(test, Month=="4" | Month=="5")

但是,我想知道是否有更好的方法直接从POSIXct日期时间执行此操作(无需先创建YearMonth列。任何想法?

1 个答案:

答案 0 :(得分:2)

sub1 <- subset(test, format(DateTime, "%Y") %in% c("1983" , "1985")  )
sub2 <- subset(test, as.numeric(format(DateTime, "%m")) %in% 4:5)