2017-05-12 81 views
-2

給定的是具有'Date'(yyyy-mm-dd)列的數據框。組中的隨機樣本組

 Date 
1  2015-01-01 
2  2015-01-01 
3  2015-01-01 
4  2015-01-01 
5  2015-01-01 
6  2015-01-24 
7  2015-01-24 
8  2015-01-30 
9  2015-01-30 
... 
996  2015-12-17 
997  2015-12-17 
998  2015-12-31 
999  2015-12-31 

現在我想在每個月內按日期對數據幀進行採樣。如果不同行中的日期相同,則應該在樣本之後對其進行分組。

結果我'尋找可能是這樣的:

 Date 
1  2015-01-24 
2  2015-01-24 
3  2015-01-01 
4  2015-01-01 
5  2015-01-01 
6  2015-01-01 
7  2015-01-01 
8  2015-01-30 
9  2015-01-30 
... 
996  2015-12-31 
997  2015-12-31 
998  2015-12-17 
999  2015-12-17 
+0

也許'庫(dplyr); df%>%group_by(lubdidate :: month(Date))%>%sample_frac(replace = TRUE)' – Axeman

+4

@Axeman如果超過1年會發生什麼? –

+1

@RomanLuštrik使用'group_by(lubridate :: year(Date),lubridate :: month(Date))'而不是? – Axeman

回答

2

使用dplyrpadr這是一個解決方案

library(dplyr) 
library(padr) 

# make some data 
x <- data.frame(Date = seq(as.Date("2016-01-01"), length.out = 730, by = "day")) %>% 
    sample_frac(0.8) %>% arrange(Date) 

x %>% thicken("month") %>% 
    group_by(Date_month) %>% 
    sample_n(10) 
+0

考慮到幾個月來自不同年份的事實。奇蹟般有效。 –