r - 用不同的变量替换重复项

标签 r duplicates

我正在尝试执行以下操作。在我的面板数据集中,我观察了不同年龄的个体。但数据并不精确,因此我可能会在不同年份重复相同的年龄(例如 [id=1,year=2000,age=40] 和 [id=1,year=2001,age=40]。我想识别这些观察结果,并用一个不同的变量代替它们,该变量对应于“年份”-“出生年份”。

所以我会有这样的东西:

<表类=“s-表”> <标题> id 年 年龄 出生年份 age_dv <正文> 1 2000 40 1960 40 1 2001 40 1960 41 1 2002 42 1960 42

我想替换为:

<表类=“s-表”> <标题> id 年 年龄 出生年份 age_dv <正文> 1 2000 40 1960 40 1 2001 41 1960 41 1 2002 42 1960 42

我之前在 Stata 中做过这个,我会创建一个列,根据 id 和年龄识别重复项(例如,如果是重复项,则为 1),并使用这个新“标签”列上的条件替换这些变量。

最终结果如下:

<表类=“s-表”> <标题> id 年 年龄 出生年份 age_dv 重复 <正文> 1 2000 40 1960 40 0 1 2001 41 1960 41 1 1 2002 42 1960 42 0

我可以在 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/

相关文章:

r - 有没有办法在R中制作漂亮的 "flow maps"或 "line area"图?

r - 从 R 中的 anova (glm) 中提取残留偏差

r - 如何将函数应用于特定列而不丢失其他列?

r - 正态分布范围之间列的概率

python - 查找重复的文件名,并且只使用 python 保留最新文件

python - 返回多列中 pandas 的所有重复项

c++ - QSet 中的重复项

r - 仅选择一些facet在facet_wrap、ggplot2中打印

C 检查重复的字符串条目

postgresql - 获取两行之间不同的列