簡體   English   中英

將 sample_n output 從 tibble 轉換為變量

[英]Convert sample_n output from tibble to just a variable

我正在嘗試創建一個隨機集,我需要的變量之一是隨機選擇的日期。 我遇到的問題是 sample_n 的 output 本身就是一個小標題。 當我嘗試按行綁定多個集合時,這會成為問題。

請看下面的例子。

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 不能是包含數據框的列表

謝謝

您可以只pull結果以將其轉換為向量:

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

為什么不在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM