重复测量:如何使用初始测量来估计基于关闭时间差异的后续测量

Repeat measures: how to use initial measurements to estimate subsequent measurement based off time differences

我有一个数据框,其中包含个人被发现当年的重复记录。

>long<-data.frame(identity,year,age)
> long
   identity year  age
1         z 2000 10.0
2         z 2001  7.5
3         z 2001  7.5
4         y 2000 10.0
5         x 2003  9.0
6         x 2004 11.0
7         w 2003  9.0
8         v 2001  7.5
9         v 2002 11.0
10        v 2004 11.0

年龄是根据他们被捕的年份估计的

yr.est<-data.frame(yr,est.age)
> yr.est
    yr est.age
1 2000    10.0
2 2001     7.5
3 2002    11.0
4 2003     9.0
5 2004    11.0

当第一次看到一个人时,我如何给他们估计年龄初始估计年龄 + 年份之间的差异(例如,个人 v 在 2001 年估计为 7.5,而他们在 2004 年的年龄应为 10.5不是 11)

我的实际数据集有 15000 长,所以我无法手动完成

TIA

编辑。

OP 作为评论发布的预期输出。

long 
  identity year age 
1        z 2000 10.0 
2        z 2001 11.0 
3        z 2001 11.0 
4        y 2000 10.0 
5        x 2003 9.0 
6        x 2004 10.0 
7        w 2003 9.0 
8        v 2001 7.5 
9        v 2002 8.5 
10       v 2004 10.5

此代码计算 est.age,方法是将当前年份与第一年之间的差异添加到第一个年龄,按 identity 组。

library(tidyverse)

long %>%
  group_by(identity) %>%
  mutate(est.age = first(age) + (year - first(year))) %>%
  select(identity, year, est.age)
## A tibble: 10 x 3
## Groups:   identity [5]
#   identity  year est.age
#   <fct>    <int>   <dbl>
# 1 z         2000    10  
# 2 z         2001    11  
# 3 z         2001    11  
# 4 y         2000    10  
# 5 x         2003     9  
# 6 x         2004    10  
# 7 w         2003     9  
# 8 v         2001     7.5
# 9 v         2002     8.5
#10 v         2004    10.5

数据.

long <- read.table(text = "
   identity year  age
1         z 2000 10.0
2         z 2001  7.5
3         z 2001  7.5
4         y 2000 10.0
5         x 2003  9.0
6         x 2004 11.0
7         w 2003  9.0
8         v 2001  7.5
9         v 2002 11.0
10        v 2004 11.0
", header = TRUE)