Даже после преобразования моего файла как фактора, почему мои выходные данные дают коэффициент (0) 30956 уровней? - PullRequest
6 голосов
/ 23 марта 2019

Я новичок в 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

Моя цель - найти, какой почтовый индекс имеет наибольшее значение.

Мой ввод:

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 голосов
/ 23 марта 2019

Если вы хотите узнать, какой почтовый индекс имеет наибольшее значение, выполните 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...