r - 如何根据基数R中的整个数字,而不仅仅是前导数字对列中的数字进行排序?
问题描述
我有一列要排序的数字,最大的数字在顶部,然后按降序排列。我尝试使用 sort(),但结果将 900 放置为大于 1000 的数字。基本上它是根据数字中的第一个数字进行排序的。我不想那样。我希望它根据整个数字进行排序。有没有办法在基础 R 中做到这一点,而不使用像 dplyr 这样的任何库。
我尝试了多种方法和大量的谷歌搜索,我很惊讶我找不到这样做的方法。也许我只是疯了。
解决方案:像往常一样,在我发布后再次进行谷歌搜索,我找到了解决方案。原来该列的类是“字符”。我使用 as.numeric() 将其更改为数值,然后使用 sort 并完成了我想要的操作。无论如何,我都会为将来可能需要它的任何人保留这篇文章。
解决方案
如果 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"
推荐阅读
- angular - CRUD 应用程序中的动作/效果/减速器数量过多
- java - Java HashMap 过滤
- python - 在 Windows 10 中的 python 3.4 上安装 pandas 时出错
- reactjs - graphQL 变异参数中的通用对象
- sql - SQL:如果视图存在,则进行内连接
- javascript - 如何在移动设备上滚动元素时隐藏网站上的悬停效果?
- php - 如何在 mautic 中获取与特定细分相关的所有联系人?
- django - 如何在 SQS 中解码 celery 消息
- javascript - 如何使用引导标签输入进行选择
- angular - 过滤材料表中的不同列