2017-06-13 6 views
1

パネルデータセット内の個体が観察された年を特定し、その情報を別の変数に登録したいと考えています。 個体は、より連続した年に亘って観察され得るか、または1年以上の間隙があり、その後連続した毎年の観察が続いてもよい。個人が観察されたすべての年の登録Rのパネルデータセット:

ID 2は、2000および2002で観察しながら、例えば、2001年

DF = data.table(年の間隔で、2000年および2001年に観察される以下DFでID 1

df(1)ここで、d(t)= c(2000,2000,2001,2002,2002)、ID = c(1,2,3,3,2,3)

年| ID | V1

2000 | 1 |

2000 | 2 |

2001 | 1 |

2001 | 3 |

2002 | 2 |

2002 | 3 | |

年:

私はその後、V1にoutpout望んIDごとに観測年のチェーンが含まれていますID | V1

2000 | 1 | 00/01

2000 | 2 | 00/02

2001 | 1 | 00/01

2001 | 3 | 01/02

2002 | 2 | 00/02

2002 | 3 | 01/02

それ以上の情報は、IDの個々の観測値ごとに重要ではないため、各IDの最初の観測についてのみ観測された年の情報です。

年| ID | V1

2000 | 1 | 00/01

2000 | 2 | 00/02

2001 | 1 |

2001 | 3 | 01/02

2002 | 2 |

2002 | 3 |

ありがとうございました!

+0

あなたがこの情報を行うことを計画しているものは明らかではないが。将来の計算のためにおそらくより有用な解決策は、各IDの観測年を別々の名前付きリストに保存することです。これは 'split(df $ Year、df $ ID)'のようになります。 – lmo

+0

私の考えは、各期間の頻度を簡単に見ることでした。つまり、テーブル(df $ V1)(上記の2番目の表のようにV1を使用)を使用して、V1の望ましい出力が得られたと仮定して、IDが観測された各期間の観測数を簡単に取得できます。これがV1の作成範囲です。 – Enrico

+0

また、観察された期間に関してIDを区別するために、サブデータセットを容易に作成するために、それらが観察された時点または時点の情報を各IDに割り当てる。 – Enrico

答えて

0

ここではbypasteの機能を使用しています。サマリーテーブルを作成し、元のテーブルにマージします。私は(サブストリングではなく)年間の価値を残しましたが、それが必要な場合は簡単に達成できます。

df2 <- stack(by(df, df$ID, function(d) paste(d$Year, collapse = '/')), 
      stringsAsFactors = FALSE) 
df2$ind <- as.numeric(as.character(df2$ind)) #convert back to numeric 
merge(df, df2, by.x = 'ID', by.y = 'ind') 

    ID Year V1 values 
1: 1 2000 2000/2001 
2: 1 2001 2000/2001 
3: 2 2000 2000/2002 
4: 2 2002 2000/2002 
5: 3 2001 2001/2002 
6: 3 2002 2001/2002 

IDのための最初の観察のためのちょうど一つの値を取得するために、我々はdplyrパッケージを使用することができます

library(dplyr) 
merge(df, df2, by.x = 'ID', by.y = 'ind') %>% 
    select(-V1) %>% 
    group_by(ID) %>% 
    mutate(values = ifelse(Year == min(Year), values, '')) 

    ID Year values 
    <dbl> <dbl>  <chr> 
1  1 2000 2000/2001 
2  2 2000 2000/2002 
3  1 2001   
4  3 2001 2001/2002 
5  2 2002   
6  3 2002   
+0

よかった!ありがとう! – Enrico

関連する問題