当我创建一个简单的数据框时,
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
答案 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]