每行的随机(随机化)数据

时间:2016-09-02 09:35:31

标签: r shuffle

我正在尝试重新排序/随机播放数据帧的每一行的值,但无法弄清楚如何执行此操作。请参阅以下示例:

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

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

1 个答案:

答案 0 :(得分:7)

我们可以使用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))