我有一个数据框,我想随机改组某些列的顺序。例如,这是一个代表我所拥有的例子:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14
ch1 12 A 9 10 6 5 6 3 4 6 5 7 5
ch2 13 T 7 10 1 7 3 3 3 1 7 8 6
ch3 14 T 5 7 7 2 6 8 1 1 8 1 5
ch4 15 G 8 9 2 7 9 7 7 3 10 10 4
ch5 16 T 8 2 8 2 4 7 1 8 10 3 2
我想保持前三列相同(V1-V3),然后随机改变其余列的顺序(V4-V14)。例如,
V1 V2 V3 V6 V5 V11 V4 V14 V10 V8 V7 V13 V12 V9
ch1 12 A 6 10 6 9 5 4 6 5 7 5 3
ch2 13 T 1 10 1 7 6 3 3 7 8 7 3
ch3 14 T 7 7 1 5 5 1 6 2 1 8 8
ch4 15 G 2 9 3 8 4 7 9 7 10 10 7
ch5 16 T 8 2 8 8 2 1 4 2 3 10 7
我找到了许多用于置换列内行的方法,但没有遇到任何用于改组列顺序的方法。任何帮助,将不胜感激。
答案 0 :(得分:5)
您可以单独留下前三列,同时使用
对所有其他列进行洗牌"abc" (s1, s2)
"abcabc" (s3)
让我们通过返回列名来了解这对df[c(1:3, sample(4:ncol(df)))]
的工作原理。
mtcars
我们可以看到前三个列名称(在此处显示为行)在每次运行时保持不变,而其他列名称则不同。