来自 lubridate 数据集的随机四分之一时间数据的子集
subset random quarter time data from a lubridate dataset
如何使用 match() 函数生成随机季度(如一月、二月、三月)和 select 数据子集:与生成的随机季度以及第一列和第三列相对应的行。
假设我们有一个 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
我的意思是很容易 select 在数据集中随机选择 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
也许这有帮助
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)
如何使用 match() 函数生成随机季度(如一月、二月、三月)和 select 数据子集:与生成的随机季度以及第一列和第三列相对应的行。
假设我们有一个 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
我的意思是很容易 select 在数据集中随机选择 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
也许这有帮助
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)