2017-08-02 3 views
1

エントリの年と終了年とともに〜10,740 idsのデータセットを各ID、 IDの長さが異なる複数のエントリを持つことができます。プログラムの期間は、ちょうど1年(e.g. entry_year = 1986, exit_year = 1986)から複数年(e.g. entry_year = 1990, exit_year = 1995)までです。入場と退院の日付を使用して、毎年計算したプログラムが登録されている人の数を計算します。[R]

プログラムが実行された年(1986年から2004年の下の例では)の数をカウントしたいと思います。

idが1年間のみ登録されていても問題はありませんが、エントリ年と終了年の間の各年のIDを計算する必要があるため、IDエントリ年1990年と終了年2005では、 1990年、1991年、1992年、1993年、1994年、1995年に毎年登録されているとみなすことができる。

ビットは切り捨てられています。

id = c(1,1,1,3,3,3,5,5,5,5) 
entry_year = c(1986, 1988, 1990, 1987, 2002, 2003,1988, 1989, 1990, 2000) 
exit_year = c(1987, 1988, 1997, 2001, 2002, 2005, 1988, 1989, 1995, 2004) 
test <- data.frame(id, entry_year, exit_year) 

Rバージョン3.4.0、たぶんこのようなWindows 7のx64の

答えて

0

years = min(entry_year):max(exit_year) 
data.frame(year = years, enrolled = sapply(years, 
       function(x) {sum(test$entry_year<=x & test$exit_year>=x)})) 

出力:

year enrolled 
1 1986  1 
2 1987  2 
3 1988  3 
4 1989  2 
5 1990  3 
6 1991  3 
7 1992  3 
8 1993  3 
9 1994  3 
10 1995  3 
11 1996  2 
12 1997  2 
13 1998  1 
14 1999  1 
15 2000  2 
16 2001  2 
17 2002  2 
18 2003  2 
19 2004  2 
20 2005  1 

・ホープ、このことができます!

関連する問題