#r #date #append
#r #Дата #добавить
Вопрос:
Я получаю сообщение об ошибке при использовании smartbind для добавления двух наборов данных. Во-первых, я почти уверен, что ошибка, которую я получаю:
> Error in as.vector(x, mode) : invalid 'mode' argument
исходит из переменной date в обоих наборах данных. Переменная даты в ее необработанном формате такая: месяц / день / год. Я преобразовал переменную после импорта данных с помощью as.Дата и формат
> rs.month$xdeeddt <- as.Date(rs.month$xdeeddt, "%m/%d/%Y")
> rs.month$deed.year <- as.numeric(format(rs.month$xdeeddt, format = "%Y"))
> rs.month$deed.day <- as.numeric(format(rs.month$xdeeddt, format = "%d"))
> rs.month$deed.month <- as.numeric(format(rs.month$xdeeddt, format = "%m"))
Результирующая переменная даты как таковая:
> [1] "2014-03-01" "2014-03-13" "2014-01-09" "2013-10-09"
Преобразование для даты было применено к обоим наборам данных (формат необработанных данных был идентичен для обоих наборов данных). Когда я пытаюсь использовать smartbind из пакета gtools для добавления двух наборов данных, он возвращает приведенную выше ошибку. Я удалил переменные даты, месяца, дня и года из обоих наборов данных и смог успешно добавить наборы данных с помощью smartbind.
Любые предложения о том, как я могу добавить наборы данных с переменными даты …..?
Комментарии:
1. Какую версию
gtools
вы используете? Я вижу, чтобы увидеть эту ошибку,gtools_3.1.1
но неgtools_3.4.1
2. У меня версия 3.0.0, я обновлю и попробую.
Ответ №1:
Я пришел сюда после поиска в Google того же сообщения об ошибке во время smartbind двух фреймов данных. Приведенное выше обсуждение, хотя и не столь убедительное в отношении решения, определенно помогло мне преодолеть эту ошибку.
Оба моих фрейма данных содержат объекты даты POSIXct. Это всего лишь числовой вектор UNIXy seconds-since-epoch, а также пара атрибутов, которые обеспечивают структуру, необходимую для интерпретации вектора как объекта даты. Решение состоит в том, чтобы просто удалить атрибуты из этой переменной, выполнить smartbind, а затем восстановить атрибуты:
these.atts <- attributes(df1$date)
attributes(df1$date) <- NULL
attributes(df2$date) <- NULL
df1 <- smartbind(df1,df2)
attributes(df1$date) <- these.atts
Я надеюсь, что это когда-нибудь кому-нибудь поможет.
-Энди