我正在尝试执行以下操作。在我的面板数据集中,我观察了不同年龄的个体。但数据并不精确,因此我可能会在不同年份重复相同的年龄(例如 [id=1,year=2000,age=40] 和 [id=1,year=2001,age=40]。我想识别这些观察结果,并用一个不同的变量代替它们,该变量对应于“年份”-“出生年份”。
所以我会有这样的东西:
我想替换为:
我之前在 Stata 中做过这个,我会创建一个列,根据 id 和年龄识别重复项(例如,如果是重复项,则为 1),并使用这个新“标签”列上的条件替换这些变量。
最终结果如下:
我可以在 R 中做同样的事情吗?或者有更好的办法吗?
最佳答案
带有 data.table
的选项是
library(data.table)
setDT(df)[, c('duplicate', 'age') := .(+(duplicated(age)),
year - year_birth), .(id)]
df
# id year age year_birth age_dv duplicate
#1: 1 2000 40 1960 40 0
#2: 1 2001 41 1960 41 1
#3: 1 2002 42 1960 42 0
数据
df <- structure(list(id = c(1L, 1L, 1L), year = 2000:2002, age = c(40L,
40L, 42L), year_birth = c(1960L, 1960L, 1960L), age_dv = 40:42),
class = "data.frame", row.names = c(NA, -3L))
关于r - 用不同的变量替换重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65204783/