わかりました。私は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])