r-将tibble的sample_n输出转换为一个变量



我正在尝试创建一个随机集,我需要的变量之一是随机选择的日期。我遇到的问题是sample_n的输出本身就是一个tibble。当我尝试按行绑定多个集合时,这就成了问题。

请参阅下面的示例。

library(tidyverse)
dts <- 
tibble(date=seq(as.Date("2020-07-01"),as.Date("2020-07-31"),by="1 days")) %>% 
mutate(wday=weekdays(date)) %>% 
filter(wday!="Saturday" & wday!="Sunday")
dt1 <- tibble(
date=sample_n(dts[1], 5),
x=runif(5, 10, 20)) 
glimpse(dt1)
dt2 <- tibble(
date=sample_n(dts[1], 4),
x=runif(4, 10, 20)) 
glimpse(dt2)

从中可以看出,dt1和dt2中的变量date是一个tibble。我原以为这只是一个日期变量。

当我试图将这两个集合结合起来时,这就成了问题。

dt <- dt1 %>% bind_rows(dt2)

当我运行最后一行时,我得到以下错误消息:

错误:参数1不能是包含数据帧的列表

感谢

为什么不在base中使用sample()dplyr::sample_n()是对数据集的行进行采样。在您的情况下,您只需要对向量进行采样,即dts$date,因此dplyr::sample_n()是一个迂回路径。

dt1 <- tibble(
date = sample(dts$date, 5),
x = runif(5, 10, 20)
)
dt1
# # A tibble: 5 x 2
#   date           x
#   <date>     <dbl>
# 1 2020-07-09  13.0
# 2 2020-07-17  18.0
# 3 2020-07-13  16.7
# 4 2020-07-28  16.5
# 5 2020-07-03  14.6

您只需pull结果即可将其转换为向量:

dts %>% sample_n(5) %>% pull(date)
[1] "2020-07-22" "2020-07-08" "2020-07-03" "2020-07-15" "2020-07-17"

最新更新