【发布时间】:2017-07-12 11:12:50
【问题描述】:
我对 R 相当陌生,我正在努力解决我的问题。我的 R 数据框的简化版本如下:
id year num_inst
1 1995 4
1 1996 3
1 1996 3
2 1995 1
2 1997 2
2 1998 2
3 2005 4
4 1998 1
4 1999 7
...
我要做的是向标记为 num_inst_prior 的每一行添加一个新列值,这取决于满足特定条件的给定行。我所追求的是以下内容:
id year num_inst num_inst_prior
1 1995 4 NA
1 1996 3 4
1 1996 3 4
2 1995 1 NA
2 1997 2 NA
2 1998 2 2
3 2005 4 NA
4 1998 1 NA
4 1999 7 1
...
也就是说,我想要一个列来表示上一年给定 id 的实例数 (num_inst),即当 year = 1996 且 id = 1 时,上一年的实例数是多少 (num_inst_prior = 4;1995)。
我已尝试添加新列
> df$prior_year <- df$year - 1
并考虑使用 which 函数作为第一步,但它似乎只能按行操作。这样我就被困在没有“whiches”的第一个障碍上。
> which(df$year == df$prior_year & df$id == df$id)
integer(0)
任何能指引我正确方向的帮助都将不胜感激。
【问题讨论】:
-
按'id'分组后可以查看
lag -
我不认为它这么简单,因为并非所有年份数据都为给定的 id 提供。即,如果某个 id 在上一年没有出现 num_inst 值,我需要它显示 NA。
标签: r dataframe data-manipulation