我有一个按日期排列的事件数据库。我想按月和年创建一个事故频率表。
我在下面使用以下代码:
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 ...
我该怎么办?
答案 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')))