2012-07-12 38 views
1

我使用R中的tapply函數創建了持續時間的數組「持續時間」。與數組向量關聯的屬性是「字符」類,我相信這就是爲什麼他們在代碼中排序爲"1" "10" "100" "2" "20" "200"...的例子。R:按屬性以升序排列二維數組

上述屬性與行程編號相關聯,我想按升序對此編號進行排序(1,2,3 ...)。我曾嘗試過使用order,sort,轉換爲data.frame等,但一直不成功的各種攻擊。請幫忙!

我的代碼如下。


tripDur <- function (aDate) { 
    difftime(max(aDate), min(aDate), units = "hours") 
} 

tmp<- tapply(gps$D_DATE, gps$trip, tripDur) 
duration <- tmp; duration 

> duration 
     1   10  100  101  102  103  104  105 
14.8155556 4.6188889 1.6166667 15.9366667 27.4000000 18.1200000 16.8522222 16.9066667 

> str(duration) 
num [1:158(1d)] 14.82 4.62 1.62 15.94 27.4 ... 
- attr(*, "dimnames")=List of 1 
    ..$ : chr [1:158] "1" "10" "100" "101" ... 

回答

3

嘗試沿着此線的東西。

> my.vec <- letters[1:5] 
> names(my.vec) <- c("1", "10", "5", "100", "13") 
> my.vec 
    1 10 5 100 13 
"a" "b" "c" "d" "e" 
> my.vec[order(as.numeric(names(my.vec)))] 
    1 5 10 13 100 
"a" "c" "b" "e" "d"