#data as follows;
values <- c(1,1,1,0,1,1)
values2 <- c(0,1,0,1,0,1)
values3 <- c(0,0,0,0,0,1)
Data <- data.frame(name = names, value = values, value2 = values2, value3 = values3)
Data[order(Data[,4], Data[,3], Data[,2]),] # basic ordering of data in base R
问题1。
有没有办法调用Data[order(Data[,4:2],),]
之类的东西,因此命令所有列与上面的代码相同。 (我有大约100个二进制列,我想用它来订购由{1600}行和大约1620列组成的data.frame
,所以我的代码看起来像这样Data[order(Data[,21:1620],),])
问题2。
如果我想在不同的配置中订购“共现”,请考虑一下;
smallData[order(smallData[,4], smallData[,3], smallData[,2]),]
结果:
name value value2 value3
1 paul 1 0 0
3 dave 1 0 0
5 john 1 0 0
4 will 0 1 0
2 mark 1 1 0
6 steph 1 1 1
相反,我想
name value value2 value3
1 paul 1 0 0
3 dave 1 0 0
5 john 1 0 0
2 mark 1 1 0
6 steph 1 1 1
4 will 0 1 0
答案 0 :(得分:3)
1)dplyr
base::order
的{{1}}版本为arrange
,在需要的内容方面稍微灵活一些,尤其是SE版本:
library(dplyr)
arrange_(Data, .dots = names(Data)[4:1])
# names values values2 values3
# 1 john 1 0 0
# 2 mark 1 0 0
# 3 paul 1 0 0
# 4 will 0 1 0
# 5 dave 1 1 0
# 6 steph 1 1 1
2)您可以通过反转排序values
的方向来安排:
arrange(Data, desc(values), values2)
# names values values2 values3
# 1 paul 1 0 0
# 2 john 1 0 0
# 3 mark 1 0 0
# 4 dave 1 1 0
# 5 steph 1 1 1
# 6 will 0 1 0