Рассмотрим кадр данных формы
idnum start end
1993.1 17 1993-01-01 1993-12-31
1993.2 17 1993-01-01 1993-12-31
1993.3 17 1993-01-01 1993-12-31
с start
и end
имеет тип Date
$ idnum : int 17 17 17 17 27 27
$ start : Date, format: "1993-01-01" "1993-01-01" "1993-01-01" "1993-01-01" ...
$ end : Date, format: "1993-12-31" "1993-12-31" "1993-12-31" "1993-12-31" ...
Я хотел бы создать новый dataframe, который вместо этого ежемесячно наблюдает за каждой строкой, за каждый месяц между start
и end
(включая границы):
Желаемый результат
idnum month
17 1993-01-01
17 1993-02-01
17 1993-03-01
...
17 1993-11-01
17 1993-12-01
Я не уверен, какой формат month
должен иметь, я в какой-то момент хочу сгруппировать по idnum
, month
для регрессий в остальной части набора данных.
До сих пор для каждой отдельной строки seq(from=test[1,'start'], to=test[1, 'end'], by='1 month')
дает мне правильную последовательность - но как только я попытаюсь применить ее ко всему кадру данных, это не сработает:
> foo <- apply(test, 1, function(x) seq(x['start'], to=x['end'], by='1 month'))
Error in to - from : non-numeric argument to binary operator