我可以重新排列 R 中嵌套 tibble 中的数据吗?

问题描述 投票:0回答:1

我希望能够随机化每个“对”发生“类型”的时间(“日期.时间”),并最终为排列参考模型重复此过程 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)
我希望我的问题和理想的结果是清楚的 - 我是第一次发帖,所以对我宽容一些!谢谢!

r random nested-lists
1个回答
0
投票
我想我听到你说你想从同一对组内的随机采样值生成一个新的 date.time 值,因此当对是“AB”时,有 4 个值,可以选择其中任何一个作为新值以“AB”为对的每行的 date.time 值?如果是这样,您可以通过 group_by 配对、变异和采样来创建从该组采样的新变量。目前还不清楚每个新的 date.time 值是否必须是唯一的,或者是否可以重复,以及旧的 date.time 和新的 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
    
© www.soinside.com 2019 - 2024. All rights reserved.