2012-01-10 98 views
1

這是我的數據集。數據列排序在R

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缺失。以其他方式做這件事的問題或好方法是什麼?

回答

4

order(d[1,-1])返回的整數向量指的是data.frame d[,-1](即d,第一列被刪除)。如果您使用該向量來索引d列中的列,則會對其列進行無意義的排序(並且完全丟失最後一列)。

這應該可以解決這個問題:

d[,c(1, 1+ order(d[1,-1]))]