我有一套几年(20-70岁)的每日时间序列数据。日期的格式为dd / mm / yyyy在一列中,每日流量值在另一列中。我打算在R中对每年的最大流量进行排序和提取。
答案 0 :(得分:1)
尝试其中一个聚合函数。
aggregate(flow~cbind(year=substr(year,7,11)), df1, FUN=max)
# year flow
#1 2001 23
#2 2002 26
或者
library(data.table)
setDT(df1)[, list(flow= max(flow)) ,.(Year=substr(year, 7, 11))]
# Year flow
#1: 2001 23
#2: 2002 26
另一种选择是转换为'Date'类,然后提取'year'部分。
library(lubridate)
setDT(df1)[, list(flow=max(flow)), .(Year= year(dmy(year)))]
set.seed(24)
df1 <- data.frame(year= c('26/05/2001', '27/05/2001', '02/01/2002',
'03/01/2002'), flow= sample(20:30,4, replace=FALSE), stringsAsFactors=FALSE)