2014-09-26 33 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