【发布时间】:2013-12-03 03:30:23
【问题描述】:
我对同一组进行了多次观察,每次观察我都有一年的时间。
dat = data.frame(group = rep(c("a","b","c"),each = 3), year = c(2000, 1996, 1975, 2002, 2010, 1980, 1990 ,1986,1995))
group year
1 a 2000
2 a 1996
3 a 1975
4 b 2002
5 b 2010
6 b 1980
7 c 1990
8 c 1986
9 c 1995
对于每个观察,我想知道是否可以在相对于焦点观察的给定条件下找到同一组的另一个观察。例如:“在过去 6 年(从焦点年开始)在同一组中是否有任何其他观察(除了焦点观察)”。
理想情况下,数据框应该是这样的
group year six_years
1 a 2000 1 # there is another member of group a that is year = 1996 (2000-6 = 1994, this value is inside the threshold)
2 a 1996 0
3 a 1975 0
4 b 2002 0
5 b 2010 0
6 b 1980 0
7 c 1990 1
8 c 1986 0
9 c 1995 1
基本上,对于每一行,我们应该查看组的子集,看看是否有(dat$year == 条件)。使用 for 循环很容易做到,但在这里没有用:数据帧很大(数百万行),循环将永远持续下去。 我正在寻找一种使用矢量化函数或快速包的有效方法。
谢谢!
【问题讨论】: