パネルデータ分析のために同じIDの標本のデータをtydirのパッケージを用いて幾つかの行に分解したいと考えています。
元のデータにはイベント発生時の時間(L1~L3)が入っています。

id L1 L2 L3 now
1  30 35 NA  42
2  22 26 31  33
3  31 31 NA  34
7  33 NA NA  35
44 NA NA NA  28

(他の共変量もたくさん含まれていますが今回の変形に必要なところだけ抜き出しました。)

改造後のデータは

id event start end count
1      1     0  30     1
1      1    30  35     2
1      0    35  42     3
2
2
2
3
3
3
7      1     0  33     1
7      0    33  35     2
44     0     0  28     1

という感じです。count=1startは0、endはL1,count=2startはL1、endはL2です。

tidyrgatherすれば良さげですが、あまり使い慣れておらず詳しい使い方がわからないので詳しい方に教えていただきたいです。よろしくお願い致します。

data

structure(list(id = c(1, 2, 3, 7, 44), L1 = c(30, 22, 
31, 33, NA), L2 = c(35, 26, 31, NA, NA), L3 = c(NA, 31, 
NA, NA, NA), now = c(42, 33, 34, 35, 28)), .Names = c("id", 
"L1", "L2", "L3", "now"), class = "data.frame", row.names = c(NA, 
-5L))

追記
ここに書いてある方法だとmeltで全ての列が分解されてしまいました。
tidyrgathermeltと入れ替え、また分解する列を指定したらうまくいきました。
tidyr::gather("カラム名を収納する列","値を収納する列",分解する列の指定)
という感じで
tidyr::gather("name","end",L1:now)と指定しました。