Numeri c тип данных с цифрами «0» после точки - PullRequest
0 голосов
/ 13 марта 2020

Сегодня я взглянул на набор данных pop пакета wpp2019 и заметил, что числа населения показаны в виде числовых значений c со знаком "." после трех последних цифр (например, 10500 - 10.500).

library(wpp2019)
data("pop")
pop$`2020`

Чтобы удалить точки, я обычно просто превращаю столбец в символьный столбец, а затем использую, например, stringr::str_replace(), но как только я применю любую функцию (кроме печати) к численности населения столбцы, точки исчезают.

Как получается, что этот набор данных показывает, например, 10.500 при печати data.frame, даже если R обычно удаляет 0 цифр после точки для числовых значений c? И как лучше всего удалить точки в приведенном выше примере, не теряя 0 цифр?

Ожидаемый результат

 # instead of 
pop$`2020`[153]
#[1] 164.1
# this value should return 164100 because printing the data frame 
# shows 164.100

1 Ответ

1 голос
/ 13 марта 2020

Оценки населения в wpp2019 приведены в тысячах. Поэтому умножьте на 1000, чтобы вернуться к оценочному числу людей:

> pop$`2020`[153]*1000
[1] 164100

R печатает десятичную часть иногда, но не в других случаях, основываясь на аргументе digits в print, и что еще находится в вектор это печать. Например:

> print(1234567.890)
[1] 1234568 # max 7 digits printed by default

> print(c(1234567.890,0.011))
[1] 1234567.890       0.011 # but when printed alongside 0.011 all the digits shown.

Это объясняет, почему ваш фрейм данных всегда показывает все цифры, но вы не видите все цифры при извлечении отдельных чисел.

...