Форматирование десятичных разрядов в символьном столбце.as.numeric стереть значения в столбце - PullRequest
1 голос
/ 27 сентября 2019

Я работаю с набором данных, в котором столбец содержит переменные с большим количеством десятичных цифр.

Примеры:

,958229561278528615818098193915712388824
2,05561009284393218251509777394193942492
2,72096803821411321343605598060792704404
2,00324997757400185789440370684992098409

, и мне нужно будет по-разному форматировать десятичные знаки.Столбец читается как символ в R. Пока он остается, я не могу использовать никакие функции, такие как round () или подобные.

Проблема в том, что

as.numeric((data$value))
as.numeric((as.character(data$value))

оба сотрут мою колонку, вернув мне колонку АН.Я также попытался импортировать набор данных непосредственно из интерфейса и преобразовать столбец в числовой формат, но он просто дает «неизвестный» формат столбца и форматирует цифры следующим образом: 6.8e + 38 1.9e + 38 5.9e + 38

, который мне тоже не нужен.

Дополнительная информация: набор данных был создан непосредственно в R путем манипулирования (merge, left_join) другими наборами данных.

Любая помощьс благодарностью!

1 Ответ

0 голосов
/ 27 сентября 2019

Я предполагаю, что вы где-то используете запятую для десятичной точки и, возможно, десятичную точку вместо разделителя тысяч.

Например:

df <- c(',958229561278528615818098193915712388824', '2,05561009284393218251509777394193942492', '2,72096803821411321343605598060792704404', '2,00324997757400185789440370684992098409')

Сначала удалите все десятичные точки, потому что они могут быть разделителями тысяч.Затем замените запятую десятичной точкой:

as.numeric(gsub(',', '.', gsub('\\.', '', df)))

Редактировать: однако, если вы собираетесь использовать больше, чем первые несколько десятичных разрядов, у вас могут возникнуть проблемы с точностью.Посмотрите на пакет Rmpfr , если вам нужна произвольная точность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...