来自lubridate数据集的子集随机季度时间数据

时间:2017-05-13 07:59:34

标签: r random lubridate

如何使用match()函数生成随机季度(如Jan,Feb,March)并选择数据的子集:与生成的随机季度以及第1和第3列对应的行。

假设我们有12个和3个列的时间数据,如下所示:

      dates     strings    numbers
1  2017-01-31       S       5
2  2017-02-28       T       1
3  2017-03-31       C       8
4  2017-04-30       Q       2
5  2017-05-31       D       6
6  2017-06-30       X      12
7  2017-07-31       N      10
8  2017-08-31       Y       9
9  2017-09-30       P      11
10 2017-10-31       G       4
11 2017-11-30       F       7
12 2017-12-31       R       3

我的意思是在数据集中选择随机3行很简单,只在第1列和第3列中选择子集。像这样,

df[sample(nrow(df), 3),c("dates","numbers")]

因此,我有,

        dates    numbers
5  2017-05-31       1
9  2017-09-30       4
11 2017-11-30      12

但是如何通过使用match()实现这样的随机财务季度,

        dates    numbers
1  2017-01-31       5
2  2017-02-28       1
3  2017-03-30       8

1 个答案:

答案 0 :(得分:2)

也许这有帮助

library(zoo)
library(tidyverse)
df %>% 
   group_by(qtr = format(as.yearqtr(dates), 'Q%q')) %>% 
   select(-strings) %>%
   sample_n(1) %>% 
   ungroup() %>% 
   sample_n(3) %>% 
   select(-qtr)