前提・実現したいこと
現在R(RStudio)でパネルデータを構築しています。
イベントが発生するまでの年数を表す変数を作りたいです。
発生している問題・エラーメッセージ
仮に日本とアメリカ2カ国を2001年からカバーしているデータだとします。
日本ではイベントが2003年と2008年に、アメリカでは2001年・2006年・2009年にそれぞれ発生しているとします。
データフレームは以下の通りです。
country | year | event |
---|---|---|
Japan | 2001 | 0 |
Japan | 2002 | 0 |
Japan | 2003 | 1 |
Japan | 2004 | 0 |
Japan | 2005 | 0 |
Japan | 2006 | 0 |
Japan | 2007 | 0 |
Japan | 2008 | 1 |
Japan | 2009 | 0 |
Japan | 2010 | 0 |
United States | 2001 | 1 |
United States | 2002 | 0 |
United States | 2003 | 0 |
United States | 2004 | 0 |
United States | 2005 | 0 |
United States | 2006 | 1 |
United States | 2007 | 0 |
United States | 2008 | 0 |
United States | 2009 | 1 |
JUnited States | 2010 | 0 |
このデータに、イベント発生までの年数を表す変数を以下のような形で追加したいです。
※最後にイベントが発生した後(日本なら2009年、アメリカなら2009年)にいつイベントが発生しているかはデータセット上特定できないので、NAとしておきたいです。
country | year | event | time1 |
---|---|---|---|
Japan | 2001 | 0 | 2 |
Japan | 2002 | 0 | 1 |
Japan | 2003 | 1 | 0 |
Japan | 2004 | 0 | 4 |
Japan | 2005 | 0 | 3 |
Japan | 2006 | 0 | 2 |
Japan | 2007 | 0 | 1 |
Japan | 2008 | 1 | 0 |
Japan | 2009 | 0 | NA |
Japan | 2010 | 0 | NA |
United States | 2001 | 1 | 0 |
United States | 2002 | 0 | 4 |
United States | 2003 | 0 | 3 |
United States | 2004 | 0 | 2 |
United States | 2005 | 0 | 1 |
United States | 2006 | 1 | 0 |
United States | 2007 | 0 | 2 |
United States | 2008 | 0 | 1 |
United States | 2009 | 1 | 0 |
JUnited States | 2010 | 0 | NA |
また、イベントが発生してからの年数を表す変数も合わせて加えたいです。
※同様の理由でNAが入ります。
country | year | event | time1 | time2 |
---|---|---|---|---|
Japan | 2001 | 0 | 2 | NA |
Japan | 2002 | 0 | 1 | NA |
Japan | 2003 | 1 | 0 | 0 |
Japan | 2004 | 0 | 4 | 1 |
Japan | 2005 | 0 | 3 | 2 |
Japan | 2006 | 0 | 2 | 3 |
Japan | 2007 | 0 | 1 | 4 |
Japan | 2008 | 1 | 0 | 0 |
Japan | 2009 | 0 | NA | 1 |
Japan | 2010 | 0 | NA | 2 |
United States | 2001 | 1 | 0 | 0 |
United States | 2002 | 0 | 4 | 1 |
United States | 2003 | 0 | 3 | 2 |
United States | 2004 | 0 | 2 | 3 |
United States | 2005 | 0 | 1 | 4 |
United States | 2006 | 1 | 0 | 0 |
United States | 2007 | 0 | 2 | 1 |
United States | 2008 | 0 | 1 | 2 |
United States | 2009 | 1 | 0 | 0 |
JUnited States | 2010 | 0 | NA | 1 |
該当のソースコード
最初のデータフレームを作れるようにコードを置いておきます。
R
1country <- c("Japan","Japan", "Japan", "Japan", "Japan", 2 "Japan", "Japan", "Japan", "Japan", "Japan", 3 "United States", "United States", "United States", "United States", "United States", 4 "United States", "United States", "United States", "United States", "United States") 5year <- c(2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 6 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010) 7event <- c(0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 8 1, 0, 0, 0, 0, 1, 0, 0, 1, 0) 9data <- data.frame( 10country = country, 11year = year, 12event = event 13)
試したこと
当該データフレームをpdata.frame化してlag関数を使ってなんとかできないかと考えましたが、思いつきませんでした。
補足情報(FW/ツールのバージョンなど)
R 4.0.3
R Studio Version 1.2.5033
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/02 01:44