2016-09-02 2 views
2

データフレームの各行の値を並べ替える/シャッフルしようとしましたが、これを行う方法がわかりません。以下の例を参照してください。各行のデータをシャッフル(ランダム化)

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 

I)は、例えばhereが、私は何をしたいのはかなりない(サンプルを使用してみました。 「列のシャッフル」は、私がやろうとしているのと最もよく似ていますが、列全体ではなく、個々の行ごとにsample()を実行します。

答えて

7

我々はdata.table

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

NOTEを使用することができます。それは行方向サンプリングであるポストで述べたOPを。

そしてbase Rソリューション:

df1[] <- t(apply(df1, 1, sample)) 
関連する問題