按时间顺序排序表输出

时间:2018-03-03 03:40:57

标签: r

我有一个按日期排列的事件数据库。我想按月和年创建一个事故频率表。

我在下面使用以下代码:

table(format(dat$Report.Date,"%m/%Y"))
  

01/2004 01/2005 01/2006 01/2007 01/2008 01/2009 01/2011 01/2012 01/2013 01/2014 ...

它没有按时间顺序排序。我尝试了sort()和order(),但它没有用。 我想要这个输出:

  

01 / 2004,22 / 2004,300 / 2004 ... 12/2004,1 / 2005 ...

我该怎么办?

1 个答案:

答案 0 :(得分:1)

创建table后,提取'月'和year separetely并对序列进行排序

tbl <- table(format(dat$Report.Date,"%m/%Y"))
v1 <- as.numeric(substr(names(tbl), 1, 2))
v2 <- as.numeric(substr(names(tbl), 4, 8))
tbl[order(v2, ave(seq_along(v1), v1, FUN = seq_along))]

或者另一种选择是转换为yearmon对象,然后进行排序

library(zoo)
tbl[order(as.yearmon(names(tbl), "%m/%Y"))]

数据

set.seed(42)
dat <- data.frame(Report.Date = sample(seq(as.Date('2008-01-01'), 
            length.out = 100, by = '1 month')))