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

时间:2019-03-23 02:18:37

标签: r dplyr

我是R的新手,正在研究以下数据集:

我有一个名为zippopinc的文件

Repex:

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?

我该如何解决?

1 个答案:

答案 0 :(得分:0)

如果您想查找哪个邮政编码具有最高的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