R命令将具有不同位数的条目的排序拆分为小数点左侧

时间:2013-12-02 01:09:51

标签: r sorting

当我创建一个简单的数据框时,

dd <- data.frame(x = c('a','b','c','d','e','f','g','h','i','j','k','l','m'),z = c(11.2, 1.1, 911, 2,34453,11.2,106.45,44,22,12,1,19,19.1))
> dd
   x        z
1  a    11.20
2  b     1.10
3  c   911.00
4  d     2.00
5  e 34453.00
6  f    11.20
7  g   106.45
8  h    44.00
9  i    22.00
10 j    12.00
11 k     1.00
12 l    19.00
13 m    19.10

我能够按z列排序行

> dd[order(dd$z),]
   x        z
11 k     1.00
2  b     1.10
4  d     2.00
1  a    11.20
6  f    11.20
10 j    12.00
12 l    19.00
13 m    19.10
9  i    22.00
8  h    44.00
7  g   106.45
3  c   911.00
5  e 34453.00

,但是当从一个46 X~5000 .csv文件的数据框中读取时,我得到的结果似乎是在小数点左边用两位数字排序,然后是一个数字到小数点左边。我如何严格按升序排序?

1940                                                       11.8
1976                                                       11.9
1921                                                       12.1
1916                                                       12.4
1967                                                       12.5
1917                                                       12.6
1918                                                       12.6
1975                                                       13.0
1919                                                       13.8
1952                                                       14.3
1930                                                        7.9
1920                                                        8.3
1963                                                        8.4
1950                                                        8.5
1927                                                        8.6
1926                                                        8.7
1960                                                        8.7
1915                                                        8.8

1 个答案:

答案 0 :(得分:3)

看起来你的列是作为字符串而不是数字读入的。

只需转换为数字:

 dd[["z"]] <- as.numeric(dd[["z"]])

如果您收到有关NA被强制进入的消息,那么您有一些草率的数据。

检查哪些是NA,然后检查原始数据:

 index.to.NAs <- which(is.na(dd[["z"]]))
 rawData <- readLines("path/to.file.csv")
 rawData[index.to.NAs]