2015-04-27 239 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-obtaining-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

如何提取每個分割選項卡的最大值? 例如: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(value))'。 – Backlin

0

你想這是因爲你希望能夠通過一個月輕鬆過濾?

如果您創建一個新的列「月」,可能會更容易。然後你可以按月過濾。