即使我将文件转换为因子,为什么输出仍然显示因子(0)30956个级别?

3

我是新手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转换为因子(factor),但遇到以下错误:
> as.factor(zippopinc)
Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?

我该如何修复这个问题?
1个回答

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

谢谢。这只是一个可重现的例子,而不是整个数据集,这就是为什么您看不到 4.454182 @Ronak Shah。我提到了 #Repex。 - user11245489
@KidCode 我知道。你能在你的真实数据上运行 zippopinc$Zip[which.max(zippopinc$Poptoincomeratio)] 并比较答案吗? - Ronak Shah
是的,我明白了并标记了您的答案为正确。 :) 谢谢 - user11245489

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接