我是R的初学者,但我有下面的数据框,其中有更多的观察,我最多有三年91,99,07的每个"id"观察。
我想创建一个变量avg_ln_rd by 'id',如果第一个ln_rd观测值来自99,则该变量取91年的'ln_rd'和'ln_rd'的平均值;如果第一个ln_rd观测值来自07,则该变量取99年的平均值。
id year ln_rd
<dbl> <dbl> <dbl>
1 1013 1991 3.51
2 1013 1999 5.64
3 1013 2007 4.26
4 1021 1991 0.899
5 1021 1999 0.791
6 1021 2007 0.704
7 1034 1991 2.58
8 1034 1999 3.72
9 1034 2007 4.95
10 1037 1991 0.262
我也已经放弃了对"id"的任何观察,这些观察只存在三年中的一年。
我的第一个想法是为每一年创建一个独立的ln_rd变量,但我仍然需要按id过滤,我不知道该怎么做。
然后我尝试使用这些独立变量来构成if子句。
df$lagln_rd_99 <- ifelse(df$year == 1999, df$ln_rd_91, NA)
但我还是不知道如何保持"id"固定。
任何帮助都将不胜感激。
- 编辑:**
我使用dplyr按id分组,然后我可以按id对df排序,并创建一个新变量ln_rd,但移动一行吗?
1条答案
按热度按时间nvbavucw1#
仍然有点不清楚该怎么做,如果所有的年份都存在于一个组中,但这可能会有帮助。
-- edited --显示所需的输出。