我在 R 中有以下問題。我有第一個資料框,其中有一個變數指示特定公司貸款的 ID 代碼,我有第二個資料框,其中有一列包含貸款 ID 代碼和一列名稱每個公司的(因此將 ID 代碼與特定名稱相關聯)。這兩個資料幀的長度與第一個列出特定時間段內相關銀行貸款的長度不同,因此相同的 ID 多次出現,格式如下:
Data1 <- data.frame(x <- c(1, 2, 2, 2, 3, 3, 4, 5, 5, 5), y <- (runif(10)*100))
colnames(junk) <- c("Loan ID", "Loan Amount")
Loan ID Loan Amount
1 1 93.548552
2 2 22.751827
3 2 8.751289
4 2 29.347396
5 3 97.583019
6 3 32.638592
7 4 67.498956
8 5 78.206820
9 5 78.786014
10 5 42.112703
而第二個(我們稱之為 Data2)本質上是這樣的:
Data2 <- data.frame(x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), y <- c("name1", "name2", "name2", "name3",
"name4", "name5", "name6", "name6",
"name6", "name7"))
colnames(Data2) <- c("Loan ID", "Firm Name")
Loan ID Firm Name
1 1 name 1
2 2 name 2
3 3 name 2
4 4 name 3
5 5 name 4
6 6 name 5
7 7 name 6
8 8 name 6
9 9 name 6
10 10 name 7
您可以看到多個 ID 鏈接回一個公司名稱,因為在不同的時間點,公司的名稱與不同的操作相關聯。
基本上我想要做的是使用 Data2 使用 Data2 中的公司名稱更改 Data1 中的 ID。我嘗試過的是在從 Data2 創建的串列上使用解碼器包中的解碼,例如:
Keys <- setNames(as.list(Data2$FirmName), Data2$LoanID)
decode(Data1$LoanID, Keys)
這不起作用,因為每個鍵都具有相同的值(即對應于相同的名稱)。我不太確定如何解決這個問題,而且我無法手動將 ID 更改為名稱,因為在我的資料集中我有數千個觀察結果。重申我想要實作的是,如果在資料 1 中,貸款 ID 為 1,則替換為名稱 1,如果 ID 為 2,則將其替換為名稱 2,如果為 3,則將其替換為名稱 2等等。
uj5u.com熱心網友回復:
聽起來您對左連接感興趣,通過merge以下方式在 R 中實作:
Data1 <- data.frame(loan_id = c(1, 2, 2, 2, 3, 3, 4, 5, 5, 5),
amount = (runif(10)*100))
Data2 <- data.frame(loan_id = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
y = c("name1", "name2", "name2", "name3",
"name4", "name5", "name6", "name6",
"name6", "name7"))
merge(Data1, Data2)
loan_id amount y
1 1 73.4713285 name1
2 2 51.1956226 name2
3 2 57.2294079 name2
4 2 24.3442836 name2
5 3 70.6357522 name2
6 3 67.2642131 name2
7 4 7.6427665 name3
8 5 0.3323552 name4
9 5 36.5309370 name4
10 5 71.3172913 name4
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386235.html
下一篇:如何修復StreamlitAPIException:(“預期的位元組,得到了一個‘int’物件”,“轉換為具有型別物件的列值失敗”)
