1

Вопрос по r – Развернуть несбалансированные данные на ежемесячную панель

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

ID | start_date | end_date | event_type |
 1 |   01/01/97 | 08/01/98 |          1 |
 2 |   02/01/97 | 10/01/97 |          1 |
 3 |   01/01/96 | 12/01/04 |          2 |

Некоторые дела длятся дольше, чем другие. Я выяснил, как расширить данные до годовой конфигурации, извлекая год из каждой даты, а затем используя:

year <- ddply(df, c("ID"), summarize, year = seq(startyear, endyear))

с последующим:

month <- ddply(year, c("ID"), summarize, month = seq(1, 12))

Проблема с этим подходом состоит в том, что он не назначает правильное число для месяца, то есть январь = 1, и поэтому он не очень хорошо работает с набором данных события, с которым я хотел бы в конечном итоге объединить его, где я хотел бы быть совпадающим наyear, ID, а такжеmonth, Помощь будет оценена. Вот прямая ссылка на набор данных, который я пытаюсь расширить (.xls):http://db.tt/KeLRCzr9, Надеюсь, я включил достаточно информации, но, пожалуйста, дайте мне знать, нужна ли какая-либо другая информация.

  • Error: User Rate Limit ExceededConflEp, EpStartDateError: User Rate Limit ExceededEpEndDateError: User Rate Limit Exceeded%Y-%m-%dError: User Rate Limit Exceededdb.tt/KeLRCzr9Error: User Rate Limit Exceeded

    от Zach
  • Error: User Rate Limit ExceededConflEpError: User Rate Limit Exceeded

    от Zach
  • Error: User Rate Limit Exceeded

    от Zach
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • 0

    Предполагая

    ddply(df, .(ID), summarize, dt = seq.Date(start_date, end_date, by = "month"))
    

    что start_date и end_date уже являются объектами даты. Джоран приблизил меня, хотя, еще раз, спасибо за помощь в этом.

  • 1

    Вы можете попробовать что-то вроде этого:

    ddply(df,.(ID),transform,dt = seq.Date(as.Date(start_date,"%m/%d/%Y"),as.Date(end_date,"%m/%d/%Y"),by = "month"))
    

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