Преобразование строки в двойной - PullRequest
0 голосов
/ 02 апреля 2020

После использования верхнего сценария тест Catcher4Test $ TimePlayed преобразует 2250 в 2,25

Почему?

До сценария

Before script

После скрипт

After script

спасибо

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

R интерпретирует '.' как десятичное место Когда вы конвертируете строку в число c, вы получаете эту ошибку. Например:

as.numeric('2.050')
[1] 2.05

Чтобы предотвратить это, выполните:

> as.numeric(str_remove(string = Catcher4Test$TimePlayed, pattern = '\\.'))
[1] 2250

Sidenote: будьте осторожны, я настоятельно рекомендую использовать приведенное ниже решение, чтобы быть на 100% уверенным, что преобразование Ваши символьные переменные верны:

> as.numeric(str_remove(string = as.character(Catcher4Test$TimePlayed), pattern = '\\.'))
[1] 2250

Это связано с проблемой ниже: Что не так с as.numeri c в R?

0 голосов
/ 02 апреля 2020

Похоже, ваши данные используют "." отделить сотые от тысячных Я бы использовал readr::parse_number, чтобы сказать R, как интерпретировать ваши данные. Это пример:

readr::parse_number("2.250", locale = locale(grouping_mark = "."))

Я бы предложил использовать одну из readr функций (read_csv, read_tsv et c.) Для чистого чтения ваших данных, чтобы вы не делали этого. Я должен разобраться с этим по факту.

readr::read_*("file", locale = locale(grouping_mark = "."))

Об этом есть раздел в отличном и бесплатном R для ресурса Data Science

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