如何逐列清理数据框,但不依赖于行?

时间:2014-04-15 12:28:10

标签: r dataframe permutation

在这个答案中:https://stackoverflow.com/a/11503439/651779显示了如何以行和列的方式对数据帧进行混洗。我感兴趣的是明智地改进列。从原始数据框

> df1
  a b c
1 1 1 0
2 1 0 0
3 0 1 0
4 0 0 0

洗牌专栏

> df3=df1[,sample(ncol(df1))]
> df3
  c a b
1 0 1 1
2 0 1 0
3 0 0 1
4 0 0 0

但是,我想将其列上的每一行独立于其他行进行洗牌,而不是对整个列进行洗牌,这样就可以得到类似

的内容。
>df4
  c a b
1 0 1 1
2 1 0 0
3 1 0 0
4 0 0 0

现在,我通过遍历每一行,对行进行混洗,并将其放入数据帧来实现。有一个简单的方法吗?

1 个答案:

答案 0 :(得分:2)

类似的东西:

t(apply(df1, 1, function(x) { sample(x, length(x)) } ))

这将以矩阵形式提供结果。如果你有因素,混合数字和字符等,请注意这会强制一切都是角色。

相关问题