2014-09-26 37 views
1

我是R /編程的新手,我很抱歉如果之前有過這個問題,但是我找不到它。R編程 - 排序功能和多個數字

我在特定列上使用排序功能根據特定結果對醫院進行排序。

數據範圍從8.0到20.0。

但是,當我使用排序功能,而不是最先出現的最低值時,數據將首先被排序爲10.0,然後是所有以1開頭的數據,並以最低的數據結束(8.0,8.1 ,8.2)。

例如(儘管實際的代碼包含有更多的值):

10.3 11.5 17.8 19.2 8.1 9.2

我想的最低值是在該列表的頂部;有什麼辦法可以做到這一點?

(如果相關,我的代碼,可以發現:https://github.com/Lalawp/R-Programming/blob/86aac2c5383b5134d9b49eca481cef9c35652815/best.R

+2

運行排序檢查你列的'class'。它似乎可能是一個字符列,而不是數字。另外,爲什麼不使用'rank'功能? – 2014-09-26 18:19:47

+0

這看起來像是一個關於Coursera課程的問題。我只想提一提,Coursera的討論論壇實際上很有幫助,我同意理查德的觀點。 – blakeoft 2014-09-26 18:33:09

回答

1

沒有你的數據,這是一個在黑暗中拍攝。但我猜你的專欄是班級人物,而不是數字。這裏有一個例子

> set.seed(1) 
> s <- sample(seq(8, 20, by = 0.1), 20, TRUE) 
> sort(s) 
[1] 8.7 10.1 10.4 10.4 11.2 12.5 12.5 12.6 14.0 14.9 15.6 15.9 
[13] 16.3 16.6 17.3 17.4 18.8 18.9 19.4 20.0 
> sort(as.character(s)) 
[1] "10.1" "10.4" "10.4" "11.2" "12.5" "12.5" "12.6" "14" 
[9] "14.9" "15.6" "15.9" "16.3" "16.6" "17.3" "17.4" "18.8" 
[17] "18.9" "19.4" "20" "8.7" 

你可以看到各種各樣sort爲不同的字符和數值。

試着改變你列數字與df$col <- as.numeric(df$col)並再次

+0

看起來你是對的 - 在執行as.numeric時遇到一些麻煩,但用str檢查列的確是字符類。 – Jon 2014-09-26 19:22:20

+0

@JonStone如果列名是「col」,數據是「df」,請嘗試'df $ col < - as.numeric(df $ col)' – 2014-09-26 19:35:20