2015-05-29 5 views
1

У меня есть набор данных, соответствующий регистр покупок в магазине, это что-то вроде этого:Как разделить данные ежемесячно в R

Date   BuyId  Price  Description Category 
2010-01-01 101028  100 ...   ... 
2010-01-01 101028  100 ...   ... 
2010-01-01 101028  100 ...   ... 
2010-01-01 101028  100 ...   ... 
... 

Даты в dataframe идет от 2010-01-10 до 2015-04-01, и я хотел бы разделить его ежемесячно, так что я могу построить объем покупок в месяц за каждый год, я имею в виду что-то вроде:

Date  Count 
2010-Jan 19128 
2010-Feb 1232 
... 
... 
2015-Mar 28363 
2015-Apr 12834 

Я с трудом с этим специально потому что я довольно новичок в R, и я не знаю так много функций.

Я попытался разбить данные, используя split, но я не мог этого сделать. Кто-нибудь знает, как я могу это сделать?

+3

Попробуйте 'раскол (yourdata $ Value, формат (yourdata $ Date '% Y-% Ь')) 'Если это сделать сводку, вы можете использовать методы' aggregate', 'dplyr' или' data.table' – akrun

+1

Помимо 'format.Date' существует также' cut.Date', который предоставляет еще больше возможностей для агрегирования даты информацию через различные интервалы. См. '? Cut.Date' –

ответ

4

Вы можете использовать dplyr для этого:

df %>% 
    mutate(new.date = cut.Date(as.Date(Date, format = '%Y-%m-%d'), "month")) %>% 
    group_by(new.date) %>% 
    summarise(count = n()) 

mutate создаст новый столбец с датами обрезанных, group_by по месяцам и summarise будет подсчитывать количество записей.


Кроме того, если вам нужен год и месяц аббревиатуры, просто добавить еще один mutate:

%>% 
mutate(new.date = format(as.Date(new.date), "%Y-%b"))