"オーバーラップ"変数に基づいて順次Group_IDを作成する方法を見つけることを試みています。私がこれを説明する最も簡単な方法は、住宅、ローン、および借り手の例を使用することです。Rの再帰的なグループ化
は、例えばハウス1(H_01
)にリンクされているので 我々は
df <- data.frame(house = c('H_01','H_02','H_03','H_04','H_05'),
loan = c('L_01','L_02','L_02','L_03','L_04'),
borrower = c('B_01','B_01','B_02','B_03','B_04'))
一つは、すべての変数(家、ローン、債務者)との間に多くの関係に多くを持っているだろうと仮定し、次の例があるとしローン1(L_01
)と借り手1(B_01
)。しかしB_01
もL_02
にリンクされており、それ自体はH_02
にリンクされていますが、H_03
にもリンクされています。したがって、テーブルの最初の3行にはG_01
(グループ1)というラベルを付ける必要があります。
H_04
は、他のレコードに属していないL_03
にリンクされており、どちらも4番目のレコードはG_02
にする必要がありますのでB_03
は、他のレコードに関連しています。そして、アナログ探査で、私たちはそのレコード5は、独自のサブグループにG_03
に属し見るべきエレガントdplyr
を持ってする方法はあります(好ましくは、必ずしも必要ではないが)G_01
、G_02
、およびG_03
のこのグループ化を実現しますか?
私の専門ではありませんが、networks/igraphのように聞こえます。 – alistaire
この単純な例では、ベースRコード 'cumsum(pmin(c(1、diff(df $ loan))、c(1、diff(df $ borrower))))')がグループを計算します。しかし、初期の借り手が複数のローンを持っていて、複数の借り手とローンを共有している場合などは、一般的には機能しません。 – lmo