2013-11-01 3 views
2

У меня есть набор данных с 34 переменными и около 25 000 наблюдений. Каждое наблюдение относится к конкретному инциденту. Его отформатирован что-то вроде этого:График/частота наблюдений по месяцам

no id date   .... 
1 363 006 2005-11-05 
2 939 012 2007-01-23 
3 541 090 2009-06-14 

мне интересно, если кто-то может пройти через меня, как получить общее количество инцидентов за каждый месяц в течение 5 лет, содержащихся в этом наборе данных.

ответ

5

Похоже, вы просто хотите, чтобы подсчитать количество строк для каждого месяца, если это так, вы можете просто использовать table():

> #make junk data 
> data <- data.frame(no=rnorm(100),id=rnorm(100),date=seq(Sys.Date()-99,Sys.Date(),by="day")) 
> table(format(data$date,"%b-%Y")) 
Aug-2013 Jul-2013 Nov-2013 Oct-2013 Sep-2013 
     31  7  1  31  30 
+0

А как хорошо, это хорошее начало. Мне нужен месяц и год. Сумма за 1-2004, 2-2004, ... 1-2009, 2-2009. А затем сохраните итоговые значения как переменные (я, вероятно, могу это понять). – chilland

+0

Не знал, что вы хотели лет, я отредактировал решение для вас. – David

+0

Ok последний вопрос, любой способ отформатировать его как дату, а не фактор, чтобы я мог сортировать его по году, а не в алфавитном порядке, когда я помещал его в фрейм данных? Прямо сейчас, когда я использую as.date(), я просто получаю NA. – chilland

0
tapply(dfrm$no, sub(".+-(.+)-.+", "\\1", dfrm$date), sum, na.rm=TRUE) 

За месяц и год в формате MM-YYYY использовать это как код категории:

.... , sub("(.+)-(.+)-.+", "\\2-\\1", data$date) , .... 
Смежные вопросы