如何使用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
答案 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)