好的,我刚从 R 开始,现在有点卡住了。我有一个包含选举结果的数据集,一个人的唯一标识符是一个带有他/她名字的字符串变量。许多政客在参加不止一次选举时出现不止一次。
我想生成一个 id 来识别每个政治家。但是,有些名称更常见,并且确实可以识别不同的人。我想通过查看出现的时间差来挑选这些案例,即如果出现的时间间隔超过30年,那么同一个名字属于不同的人。
我计算了每次发生之间的差异,每次发生之间的差异大于 30 年时,我想记录所有后续发生的事件属于不同的人。我已经涉足循环,但没有让它们按照我想要的方式工作,我想有一种更惯用的方法来解决这个问题。
然后我想使用 name 变量和记录为每个人创建一个唯一的 id,但我想这可以简单地使用 id() 函数来完成。
df <- df[order(df$name, df$year),]
# difference between each occurence, NA for first occurence
df$timediff <- ave(df$year, df$name, FUN=function(x) c(NA,diff(x)))
# absolute difference to first occurence, haven't used this so far
df$timediff.abs <- ave(df$year, df$name, FUN=function(x) x - x[1])