r - 即使在将我的文件转换为因子后,为什么我的输出给出因子(0)30956 级别?

标签 r dplyr

我是 R 的新手,正在处理以下数据集:

我有一个名为 zippopinc 的文件

重复:

head(zippopinc)

  Year         Zip     Total_Population Median_Income   City State
1 1 2017 ZCTA5 00601            17599         11757  Adjuntas    PR
2 2 2017 ZCTA5 00602            39209         16190    Aguada    PR
3 3 2017 ZCTA5 00603            50135         16645 Aguadilla    PR
4 4 2017 ZCTA5 00606             6304         13387   Maricao    PR
5 5 2017 ZCTA5 00610            27590         18741    Anasco    PR
6 6 2017 ZCTA5 00612            62566         17744   Arecibo    PR
  Poptoincomeratio
       1.4968955
       2.4218036
       3.0120156
       0.4709046
       1.4721733
       3.5260370

poptoincomeratio 基本上是 Total_Population/Median_Income

我的目标是找到哪个邮政编码具有最高的 Poptoincomeratio:

我的输入:

max(sapply(zippopinc$Poptoincomeratio, max))

输出:

4.454182

所以我试过了,

zippopinc$Zip[demograph_ratio$Poptoincomeratio == 4.454182]

但这给了我:

factor(0)
30956 Levels

然后我尝试将 zipopinc 转换为一个因子,但出现以下错误:

> as.factor(zippopinc)
Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?

我该如何解决这个问题?

最佳答案

如果您想查找哪个邮政编码具有最高的 Poptoincomeratio,请执行以下操作:

zippopinc$Zip[which.max(zippopinc$Poptoincomeratio)]

使用当前方法不会产生任何输出的原因是比较浮点值存在一些限制。在这里阅读更多内容

即使对于共享示例,我们也可以看到 3.5260370 是 Poptoincomeratio 列中的最高值,但是当我们比较我们得到的值时

zippopinc$Poptoincomeratio == 3.5260370
#[1] FALSE FALSE FALSE FALSE FALSE FALSE

但是如果你使用 which.max 它返回最高的 Zip

zippopinc$Zip[which.max(zippopinc$Poptoincomeratio)]
#[1] 612

关于r - 即使在将我的文件转换为因子后,为什么我的输出给出因子(0)30956 级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55309993/

相关文章:

R dplyr : Filter data by multiple Regex expressions defined by vector

r - 在 R 中设置 newxreg=NULL 后仍然出现错误

r - 如何避免 eval 和 parse?

R/ggplot2 - 数据框的 Y 轴值

r - 如何使用 dplyr 按组以长格式创建计数

reshape R 中的数据(将具有多个值的单列拆分为具有二进制值的多列)

r - 如何在 R Windows 中将 Unicode 字符串写入文本文件?

r - 如何减少日期的ggplot中x轴的超前/滞后空间

r - 如果存在,则从多列中填充新列

r - 一起使用 recode 和 case_when