我在R

时间:2015-07-14 07:58:48

标签: r data-analysis

我有一套几年(20-70岁)的每日时间序列数据。日期的格式为dd / mm / yyyy在一列中,每日流量值在另一列中。我打算在R中对每年的最大流量进行排序和提取。

1 个答案:

答案 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)