2015-09-16 31 views
2

我有一个9000行和6列的数据帧。我想使行的顺序是随机的,即某种混洗产生具有相同数据但随机顺序的行的另一个数据帧。有谁能告诉我如何在R中做到这一点?重新洗牌数据帧中的行序列

感谢

回答

1

如果你想品尝(但保留)的行的相同的顺序,那么你可以直接品尝行。

df <- data.frame(x=1:8, y=1:8, z=1:8) 
df[sample(1:nrow(df)),] 

这将产生

x y z 
2 2 2 2 
3 3 3 3 
4 4 4 4 
6 6 6 6 
5 5 5 5 
8 8 8 8 
7 7 7 7 
1 1 1 1 

如果你行应单独取样的每一行,那么你可以这样做

lapply(df, function(x) { sample(x)}) 

导致

$x 
[1] 3 1 4 6 5 2 8 7 

$y 
[1] 2 5 6 3 4 8 7 1 

$z 
[1] 6 1 8 3 2 7 4 5 
+2

' lapply(df,function(x){sample(x)})'可以写成'lapply(df,sample)' – blmoore