对于类似于下面的数据框(但有更多变量),我想根据变量的降序和对列进行重新排序。所以在我的例子中,列顺序应该是VAR3(sum = 7),VAR2(sum = 5),VAR1(sum = 4)。我知道我可以手动完成,但我的实际数据框有太多的变量。
dat <- data.frame(VAR1=c(0,1,0,1,0,0,1,1,0),
VAR2=c(1,1,0,1,0,0,1,0,1),
VAR3=c(0,1,1,1,1,0,1,1,1))
VAR1 VAR2 VAR3
1 0 1 0
2 1 1 1
3 0 0 1
4 1 1 1
5 0 0 1
6 0 0 0
7 1 1 1
8 1 0 1
9 0 1 1
答案 0 :(得分:2)
dat <- data.frame(VAR1=c(0,1,0,1,0,0,1,1,0),
VAR2=c(1,1,0,1,0,0,1,0,1),
VAR3=c(0,1,1,1,1,0,1,1,1))
dat1 <- dat[,names(sort(colSums(dat), decreasing = TRUE))]
dat1
VAR3 VAR2 VAR1
1 0 1 0
2 1 1 1
3 1 0 0
4 1 1 1
5 1 0 0
6 0 0 0
7 1 1 1
8 1 0 1
9 1 1 0
答案 1 :(得分:1)
dat[,names(sort(colSums(dat), decreasing = T))]
colSums提供 dat
的所有列的总和> colSums(dat)
VAR1 VAR2 VAR3
4 5 7
按照总和值的递减顺序对其进行排序
> sort(colSums(dat), decreasing = T)
VAR3 VAR2 VAR1
7 5 4
按照确切的顺序获取名称,并以相同的顺序显示 dat 列
> dat[,names(sort(colSums(dat), decreasing = T))]
VAR3 VAR2 VAR1
1 0 1 0
2 1 1 1
3 1 0 0
4 1 1 1
5 1 0 0
6 0 0 0
7 1 1 1
8 1 0 1
9 1 1 0