首页 > 解决方案 > 如何根据基数R中的整个数字,而不仅仅是前导数字对列中的数字进行排序?

问题描述

我有一列要排序的数字,最大的数字在顶部,然后按降序排列。我尝试使用 sort(),但结果将 900 放置为大于 1000 的数字。基本上它是根据数字中的第一个数字进行排序的。我不想那样。我希望它根据整个数字进行排序。有没有办法在基础 R 中做到这一点,而不使用像 dplyr 这样的任何库。

我尝试了多种方法和大量的谷歌搜索,我很惊讶我找不到这样做的方法。也许我只是疯了。

解决方案:像往常一样,在我发布后再次进行谷歌搜索,我找到了解决方案。原来该列的类是“字符”。我使用 as.numeric() 将其更改为数值,然后使用 sort 并完成了我想要的操作。无论如何,我都会为将来可能需要它的任何人保留这篇文章。

标签: r

解决方案


如果 R 将数字视为字符串,就会发生这种情况,如下所示。

set.seed(1431)
x <- round(runif(10, 0, 25000))
x
# [1] 10799 19832 14455  7657  4517   743  4922 13462 22738
# [10] 19636
xc <- as.character(x)
sort(x, decreasing=TRUE)
# [1] 22738 19832 19636 14455 13462 10799  7657  4922  4517
# [10]   743
sort(xc, decreasing=TRUE)
# [1] "7657"  "743"   "4922"  "4517"  "22738" "19832" "19636"
# [8] "14455" "13462" "10799"

推荐阅读