2015-04-27 4 views
2

У меня есть данные с датой. Я хочу сгруппировать все по месячному интервалу, в котором они проживают.R, сплит данные по месяцам

Так что у меня есть:

date, value 
2015-04-01, 1 
2015-04-28, 2 
2015-05-04, 3 
2015-05-09, 4 

Тогда я хотел бы закончить с группировками

[1] 
2015-04-01, 1 
2015-04-28, 2 

[2] 
2015-05-04, 3 
2015-05-09, 4 

Примечания сохраняются все данные. Он просто сгруппирован по месяцу.

Заранее спасибо

+0

Возможный дубликат [R-язык: как разбить фрейм данных] (http://stackoverflow.com/questions/3302356/r-language-how-to-split-a-data-frame) – zx8754

+0

Я также был считая его дубликат, но решил не делать этого. Я нашел много вопросов о разделении кадров данных или [работе с месяцами и датами] (http://stackoverflow.com/questions/9749598/r-obiving-month-and-year-from-a-date), но ни один из них не объединяет два, поэтому я думал, что этот вопрос мотивирован. – Backlin

ответ

5
str <- "date, value 
2015-04-01, 1 
2015-04-28, 2 
2015-05-04, 3 
2015-05-09, 4" 

tab <- read.csv(textConnection(str), colClasses=c("POSIXct", "integer")) 
split(tab, format(tab$date, "%Y-%m")) 

$`2015-04` 
     date value 
1 2015-04-01  1 
2 2015-04-28  2 

$`2015-05` 
     date value 
3 2015-05-04  3 
4 2015-05-09  4 
+0

Как извлечь Максимальное значение каждой вкладки split? например: 2015-04 максимальное значение: 2 @Backlin – Ben2pop

+0

@ Ben2pop 'sapply (split_tab, function (x) max (x $ value))'. Лично мне легче работать с кадрами данных, а не списками, поэтому я бы использовал пакет _dplyr_ и вызывал 'tab%>% group_by (month = format (tab $ date,"% Y-% m "))%> % суммировать (max_value = max (значение)) '. – Backlin

0

вы хотите это потому, что вы хотите, чтобы иметь возможность легко фильтровать по месяцам?

Возможно, вам будет проще создать новый столбец «месяц». Затем вы можете фильтровать по месяцам.

Смежные вопросы