【问题标题】:Shuffle (randomize) data for each row随机播放(随机化)每一行的数据
【发布时间】:2016-09-02 09:35:31
【问题描述】:

我正在尝试重新排序/打乱数据帧每一行的值,但无法弄清楚如何执行此操作。请看下面的例子:

df1 #original data
#  X1 X2 X3 X4 X5
#1  1  2  3  4  5
#2  6  7  8  9 10
#3 11 12 13 14 15

生成的数据框应如下所示(无模式)。

df2 #each row is randomly shuffled
#  X1 X2 X3 X4 X5
#1  2  4  1  5  3
#2  6 10  9  7  8
#3 15 13 11 14 12

我已经尝试使用 sample() 示例 here,但它并不是我想要的。 “shuffle column-wise”与我正在尝试做的最相似,但我想为每一行而不是整个列执行 sample()。

【问题讨论】:

    标签: r shuffle


    【解决方案1】:

    我们可以使用data.table

    library(data.table)
    setDT(df1)[, as.list(sample(unlist(.SD))), .(rn = 1:nrow(df1))][, rn := NULL][]
    

    注意:帖子中提到的OP是rowwise采样。

    还有base R解决方案:

    df1[] <- t(apply(df1, 1, sample))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 2023-01-23
      • 1970-01-01
      • 2014-04-02
      相关资源
      最近更新 更多