第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何使用 R 或 Python 合并兩個(gè) id 列,識(shí)別哪些行屬于同一組相關(guān) ID

如何使用 R 或 Python 合并兩個(gè) id 列,識(shí)別哪些行屬于同一組相關(guān) ID

一只甜甜圈 2022-07-26 15:45:34
我有 2 個(gè)獨(dú)立創(chuàng)建/收集的 ID 列。我試圖通過根據(jù)兩個(gè) ID 列中的任何一個(gè)確定哪些行是同一相關(guān)組 id 的一部分,將這兩個(gè) ID 列合并為一個(gè)列。我會(huì)根據(jù)一些規(guī)則考慮相關(guān)的行:1:如果一個(gè)LOAN在多行中具有相同的值,則它們屬于同一個(gè)組(示例中僅供參考)。我稱之為loan_group。這里沒有問題。2:如果一個(gè) COLLATERAL 在多行中具有相同的值,則它們屬于臨時(shí)組。我稱它為lateral_group(與#1 相同的規(guī)則。)這里沒有問題。3:最后,我不確定如何準(zhǔn)確表達(dá)這一點(diǎn),但任何時(shí)候?qū)儆谕唤M的值之間存在重疊(跨貸款和抵押列),這些組應(yīng)該進(jìn)一步合并。例如:df <- data.frame('LOAN' = c('L1', 'L2', 'L5', 'L2', 'L6', 'L7', 'L8'),                 'COLLATERAL' = c('C1', 'C1', 'C8', 'C4', 'C8', 'C9', 'C4'))df$laon_group <- as.numeric(factor(df$LOAN))df$collateral_group <- as.numeric(factor(df$COLLATERAL))df$final_grouping <- NALOAN  COLLATERAL  loan_group  collateral_group  final_grouping----  ----------- ----------  ----------------  --------------L1    C1*         1           1                 **1**L2**  C1*         2           1                 **1**L5    C8          3           2                 2L2**  C4***       2           3                 **1**L6    C8          4           2                 2L7    C9          5           4                 3L8    C4***       6           3                 **1***因?yàn)榈?1 行和第 2 行的值都為 C1,所以它們將被分配到相同的最終分組中**因?yàn)榈?2 行的 LOAN 值為 L2,這意味著我們可以為第 4 行分配“1”的最終分組,因?yàn)樵撔锌梢酝ㄟ^ L2/C1 鏈接鏈接回第 1 行***最后,因?yàn)榈?4 行包含 COLLATERAL 值 C4,這意味著我們可以在合并的最終分組中包含第 7 行。該行可以通過 L2/C4 和 L2/C1 鏈接鏈接回第一行該數(shù)據(jù)集大約是 15m 個(gè)獨(dú)特的 LOAN + COLLATERAL 組合。在某些邊緣情況下,這些組可能會(huì)交叉幾千個(gè)(可能 +1 萬個(gè))ID。我在 BQ 測(cè)試一些解決方案時(shí)遇到了一些資源問題,包括我原來的問題中的建議,這就是為什么我想嘗試在 R/Python 中執(zhí)行此操作
查看完整描述

1 回答

?
天涯盡頭無女友

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊

如果您將此視為圖形問題,則可以執(zhí)行以下操作:


library(igraph)


g <- make_empty_graph(directed = FALSE, n = nrow(tab))


for (loan_id in unique(tab$loan)) {

    loan_idx = which(tab$loan == loan_id)

    if (length(loan_idx) >= 2) {

        g <- g + path(loan_idx)

    }

}


for (collateral_id in unique(tab$collateral)) {

    collateral_idx = which(tab$collateral == collateral_id)

    if (length(collateral_idx) >= 2) {

        g <- g + path(collateral_idx)

    }

}


tab$grouping = components(g)$membership

即,您制作一個(gè)圖表并在具有匹配貸款或抵押品 ID 的任何行之間添加邊。我不確定這是如何優(yōu)化的,因?yàn)閒orR 中的循環(huán)很少是正確的答案。


輸出與您的預(yù)期輸出匹配:


> tab

  loan collateral loan_group collateral_group final grouping

1   L1         C1          1                1     1        1

2   L2         C1          2                1     1        1

3   L5         C8          3                2     2        2

4   L2         C4          2                3     1        1

5   L6         C8          4                2     2        2

6   L7         C9          5                4     3        3

7   L8         C4          6                3     1        1


查看完整回答
反對(duì) 回復(fù) 2022-07-26
  • 1 回答
  • 0 關(guān)注
  • 86 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)