Что вы можете сделать, это что-то вроде следующего.Сначала создайте дату data.frame с expand.grid
, чтобы у нас были все годы и месяцы с 2000 по 2018 г. 12. Затем установите это в правильном порядке и добавьте последний столбец заказа, чтобы 2000 01 начинался с 1, а 2018 - это 12.228. Если вы объедините это с вашей исходной таблицей, вы получите следующий результат.Затем вы можете удалить ненужные столбцы.А поскольку у вас есть таблица дат, вы можете вернуть столбцы года и месяца на основе столбца заказа.
dates <- expand.grid(year = seq(2000, 2018), month = seq(1, 12))
dates <- dates[order(dates$year, dates$month), ]
dates$order <- seq_along(dates$year)
merge(df, dates, by.x = c("year", "month"), by.y = c("year", "month"))
year month obs order
1 2005 10 4 70
2 2005 12 2 72
3 2005 7 2 67
4 2006 1 4 73
5 2006 10 3 82
6 2006 2 1 74
7 2006 7 2 79
8 2006 8 1 80
data:
df <- structure(list(year = c(2005L, 2005L, 2005L, 2006L, 2006L, 2006L, 2006L, 2006L),
month = c(7L, 10L, 12L, 1L, 2L, 7L, 8L, 10L),
obs = c(2L, 4L, 2L, 4L, 1L, 2L, 1L, 3L)),
class = "data.frame",
row.names = c(NA, -8L))