2016-09-02 5 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 

나는 샘플 (here)을 사용해 보았지만, 원하는 것은 아닙니다. "열 순서 변경"은 내가하려는 것과 가장 비슷하지만 전체 열이 아닌 개별 행마다 sample()을 수행하려고합니다.

답변

7

우리는 data.table

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

주를 사용할 수 있습니다rowwise 샘플링되는 게시물에 언급 된 영업 이익을.

그리고 base R 솔루션 :

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