Я хотел бы преобразовать свои данные из короткого формата в длинный формат, и я думаю, что есть простой способ сделать это (возможно, с помощью reshape2, plyr, dplyr и т. д.?).
Например, у меня есть:
foo <- data.frame(id = 1:5,
y = c(0, 1, 0, 1, 0),
time = c(2, 3, 4, 2, 3))
id y time
1 0 2
2 1 3
3 0 4
4 1 2
5 0 3
Я хотел бы развернуть/скопировать каждую строку n раз, где n - это значение этой строки в столбце «время». Однако я также хотел бы, чтобы переменная «время» увеличивалась с 1 до n. То есть я хотел бы произвести:
id y time
1 0 1
1 0 2
2 1 1
2 1 2
2 1 3
3 0 1
3 0 2
3 0 3
3 0 4
4 1 1
4 1 2
5 0 1
5 0 2
5 0 3
В качестве бонуса я также хотел бы сделать своего рода увеличение переменной «y», где для тех идентификаторов с y = 1 y устанавливается равным 0 до наибольшего значения «время». То есть я хотел бы произвести:
id y time
1 0 1
1 0 2
2 0 1
2 0 2
2 1 3
3 0 1
3 0 2
3 0 3
3 0 4
4 0 1
4 1 2
5 0 1
5 0 2
5 0 3
Похоже, что dplyr уже может это сделать, но я просто не знаю, где искать. В любом случае полезно любое решение, исключающее циклы.