【问题标题】:How to use permutation test in R for a specific column for a specific number of times?如何在 R 中对特定列使用置换测试特定次数?
【发布时间】:2021-11-27 20:20:22
【问题描述】:

假设我有以下 df:

activity        score
1                 2
2                 4
3                 1
4                 6
5                 10
6                 2
7                 3
8                 6
9                 8
10                5
11                6
12                8

我想每三个分数随机洗牌,直到它达到活动 12,然后重新开始循环(即从 1 重新开始,每三个分数重新洗牌,直到它达到 12,n 次)。我将如何在 R 中做到这一点?请记住,活动不能只移动分数。

Here would be an example of a result df
activity        score
1                 4
2                 2               <- reshuffled
3                 1

4                 2
5                 10               <- reshuffled
6                 6

7                 3 
8                 6               <- reshuffled
9                 8

10                8
11                6               <- reshuffled
12                5

【问题讨论】:

  • 什么意思?您说您重新启动并重新洗牌 activities,稍后您在哪里指定活动不能移动?你所说的“每三个”是什么意思,你是反映系列的结尾,与反射重叠,还是只取最后一个 2/1?你什么时候停止循环?
  • 对不起。修正了这个问题。我想迭代循环 n 次,每 n 次,每三个分数就有一个新的随机播放。

标签: r dataframe


【解决方案1】:

假设dt是数据框,

for(i in 1:100){
  dt[,2] <- do.call(c,lapply(seq(1,12,by=3),function(iter){
    sample(dt[iter:(iter+2),2])
  }))
}

【讨论】:

  • [iter:(iter+2),2],为什么是iter +2?
  • @Dylan 这是您编辑中提供的示例。它将占用 1:3、4:6 等块
猜你喜欢
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-30
相关资源
最近更新 更多