这是我的数据集。
set.seed (1234)
mydf <- data.frame (Id = c("dis", 1:5),
V1.a = c(0,sample(c(0, 1,2), 5, replace = T)),V1.b = c(0,sample(c(0, 1,2), 5, replace = T)),
V2.a = c(1.5,sample(c(0, 1,2), 5, replace = T)),V2.b = c(1.5,sample(c(0, 1,2), 5, replace = T)),
V3.a = c(2.0,sample(c(0, 1,2), 5, replace = T)),V3.b = c(2.0,sample(c(0, 1,2), 5, replace = T)),
V4.a = c(5.0,sample(c(0, 1,2), 5, replace = T)),V4.b = c(5.0,sample(c(0, 1,2), 5, replace = T)),
V5.a = c(6.0,sample(c(0, 1,2), 5, replace = T)),V5.b = c(6.0,sample(c(0, 1,2), 5, replace = T)),
V16a = c(11.0,sample(c(0, 1,2), 5, replace = T)),V6.b = c(11.0,sample(c(0, 1,2), 5, replace = T)),
V7.a = c(12.0,sample(c(0, 1,2), 5, replace = T)),V7.b = c(12.0,sample(c(0, 1,2), 5, replace = T)),
V8.a = c(3.0,sample(c(0, 1,2), 5, replace = T)),V8.b = c(3.0,sample(c(0, 1,2), 5, replace = T)))
d = mydf
> d
Id V1.a V1.b V2.a V2.b V3.a V3.b V4.a V4.b V5.a V5.b V16a V6.b V7.a V7.b V8.a
1 0 0 0 1.5 1.5 2 2 5 5 6 6 11 11 12 12 3
2 1 1 2 1.0 0.0 1 2 1 2 0 1 1 2 0 1 1
3 2 1 1 2.0 2.0 1 2 0 1 0 1 1 1 0 2 0
4 3 0 0 1.0 2.0 2 0 2 2 2 2 2 1 1 2 0
5 4 0 2 0.0 2.0 2 2 1 1 2 2 2 1 2 1 0
6 5 2 1 2.0 0.0 2 0 1 1 0 1 0 0 0 2 1
V8.b
1 3
2 2
3 0
4 2
5 0
6 2
我想按每个变量的第一行元素的值排序。
> d <- d[,order(d[1,-1])]
> d
Id V1.a V1.b V2.a V2.b V3.a V7.b V8.a V3.b V4.a V4.b V5.a V5.b V16a V6.b V7.a
1 0 0 0 1.5 1.5 2 12 3 2 5 5 6 6 11 11 12
2 1 1 2 1.0 0.0 1 1 1 2 1 2 0 1 1 2 0
3 2 1 1 2.0 2.0 1 2 0 2 0 1 0 1 1 1 0
4 3 0 0 1.0 2.0 2 2 0 0 2 2 2 2 2 1 1
5 4 0 2 0.0 2.0 2 1 0 2 1 1 2 2 2 1 2
6 5 2 1 2.0 0.0 2 2 1 0 1 1 0 1 0 0 0
订购不适用于V7.a! V8.a失踪了。有什么问题或以其他方式做到这一点的好方法?
答案 0 :(得分:4)
order(d[1,-1])
返回的整数向量是指data.frame d[,-1]
(即移除了第一列的d
)。如果然后使用该向量来索引d中的列,则会对其列进行无意义的排序(并且您将完全丢失最终列)。
这应解决问题:
d[,c(1, 1+ order(d[1,-1]))]