我希望能够随机化每个“对”发生“类型”的时间(“日期.时间”),并最终为排列参考模型重复此过程 10,000 次。
当我寻找解决方案时,我遇到了this示例来寻求灵感。我的印象是,这段代码会使用每对适当数量的类型/日期时间对 tibble 进行重新采样。
我认为我误解了 n_sample() 函数的作用,并且我对如何操作嵌套数据的理解有限。我不想重新调整该类型和 date.time 在 tibble 中出现的顺序,而是想为每对的类型重新分配一个随机的 date.time。重要的是类型和日期.时间特定于特定的对。
下面是我的 for 循环的一次迭代的简化尝试:我有一个这样的df:
df <- data.frame(pair=c("AB", "AB", "AB", "AB", "CD", "CD", "DE", "DE", "DE"),
type=c("PR", "NN", "AP", "PX", "BK", "PX", "NN", "NN", "S2"),
date.time=c("2021-04-05_17:50:42", "2021-04-05_17:00:03", "2021-04-05_15:36:00", "2021-04-05_15:20:13", "2021-04-05_16:40:14", "2021-04-05_16:11:21", "2021-04-05_17:00:03", "2021-04-05_16:40:14", "2021-04-05_17:00:03"))
我确定了每对的“样本”数量或发生的类型数量:
sample.sizes <- df %>%
dplyr::group_by(pair) %>%
dplyr::summarize(n.sample = n()) %>%
ungroup()
我嵌套了数据并抽取了样本:
nested_data <- df %>%
select(pair, type, date.time) %>%
group_by(pair) %>%
nest() %>% # --> one row per relationship
ungroup() %>%
arrange(pair) %>%
merge(sample.sizes, by = "pair")
sampled_obsdata <- nested_obsdata %>%
mutate(sample = purrr::map2(data, n.sample, n_sample))
data <- sampled_obsdata %>%
select(-data) %>%
unnest(sample) %>%
arrange(pair, date.time)
我希望我的问题和理想的结果是清楚的 - 我是第一次发帖,所以对我宽容一些!谢谢!
library(dplyr)
df %>% group_by(pair) %>% mutate(new_date = sample(date.time)) %>% ungroup
给出类似的东西:
# A tibble: 9 × 4
pair type date.time new_date
<chr> <chr> <chr> <chr>
1 AB PR 2021-04-05_17:50:42 2021-04-05_17:00:03
2 AB NN 2021-04-05_17:00:03 2021-04-05_15:36:00
3 AB AP 2021-04-05_15:36:00 2021-04-05_17:50:42
4 AB PX 2021-04-05_15:20:13 2021-04-05_15:20:13
5 CD BK 2021-04-05_16:40:14 2021-04-05_16:11:21
6 CD PX 2021-04-05_16:11:21 2021-04-05_16:40:14
7 DE NN 2021-04-05_17:00:03 2021-04-05_16:40:14
8 DE NN 2021-04-05_16:40:14 2021-04-05_17:00:03
9 DE S2 2021-04-05_17:00:03 2021-04-05_17:00:03