as.Date терпит неудачу в R: 'символьная строка не находится в стандартном однозначном' - PullRequest
0 голосов
/ 27 апреля 2018

Я работаю с данными в R, которые я импортировал в формате excel.

У меня есть столбец (isas1_3b) в кадре данных (LPAv1.1.1) в формате character. После импорта даты изменились с формата дд / мм / гг на дни (например, 41268).

Я попытался преобразовать это как показано ниже:

as.Date(LPAv1.1.1$isas1_3b, origin = "1899-12-30")

Однако я получаю следующую ошибку:

Ошибка в charToDate (x): строка символов не в стандартном однозначном формате 4. стоп («строка символов не в стандартном однозначном формате») 3. charToDate (x) 2. as.Date.character (LPAv1.1.1 $ isas1_3b, origin = "1899-12-30") 1. as.Date (LPAv1.1.1 $ isas1_3b, origin = "1899-12-30")

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

Я также должен добавить, что в исходном документе excel есть еще два столбца даты. Но они оба были прочитаны как 'POSIXct''POSIXt'.

Другая информация, которая может иметь отношение к делу:

macOS 13.13.3 R 3.3.3 RStudio 1.1.419

Может кто-нибудь, пожалуйста, помогите решить эту проблему ... Я предполагаю, что это то, что я делаю. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018

Как вы импортировали его из Excel? Можно ли настроить метод импорта так, чтобы он импортировал его так, как вы ожидаете?

Импорт данных из Excel с пакетом "xlsx" дает вам две опции read.xlsx, которые будут определять / угадывать тип класса на основе данных в этом столбце, или read.xlsx2, где вам нужно / получить, чтобы установить типы классов вручную с опцией colClasses. (подробнее здесь: http://www.sthda.com/english/wiki/r-xlsx-package-a-quick-start-guide-to-manipulate-excel-files-in-r)

Еще одна полезная опция - XLConnect.

Возможным недостатком обоих этих пакетов является то, что они полагаются на Java для выполнения работы по импорту, поэтому для их работы необходимо установить Java.

0 голосов
/ 28 апреля 2018

Переменный класс был непоследовательным в столбце / векторе. Было сочетание дат, строк и четырехзначных чисел. Как только я это исправил, все заработало как положено. Спасибо всем за помощь.

0 голосов
/ 27 апреля 2018

Как справедливо указано thelatemail, столбец с информацией о днях должен быть в числовом формате.

d <- 41268

as.Date(d, origin = "1899-12-30")
#[1] "2012-12-25"

В вашем наборе данных это исправит:

library(dplyr)

mutate(LPAv1.1.1, isas1_3b = as.Date(as.numeric(isas1_3b), 
                                     origin = "1899-12-30"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...