我有多個資料集,我一直在 R 中將它們組合成一個摘要資料框。我在最后一步,但我受到了阻礙。
這是一個虛擬場景:想象兩個資料幀 df1 和 df2 是
df1 df2
ID Make ID Max
1 A 1 2
1 B 2 3
2 A 3 5
2 B
2 B
2 C
3 B
我想為每個 ID 顯示“Make”的所有唯一實體并將其附加到 df2 生成的 df2 應該如下所示:
df2
ID Max Make
1 2 A,B
2 3 A,B,C
3 5 B
我的嘗試沒有奏效。這是我得到的最接近的:
df2[df1
, ':=' (Make = paste(Make, collapse = ","))
, by = .EACHI
, on = .(ID = ID)]
ID Max Make
1: 1 2 B
2: 2 3 C
3: 3 5 B
任何幫助表示贊賞。
uj5u.com熱心網友回復:
使用兩步程序可能會更容易 - 即通過按“ID”對元素進行匯總來匯總“df1”資料Make列并與“ID”列進行連接pasteuniquedf2 on
library(data.table)
df2[df1[, .(Make = toString(unique(Make))), ID], on = .(ID)]
ID Max Make
<num> <num> <char>
1: 1 2 A, B
2: 2 3 A, B, C
3: 3 5 B
或者,如果我們想使用.EACHI,而不是進行賦值 ( :=),將輸出匯總在list( 或.()中
df1[df2, .(Max, Make = toString(unique(Make))), on = .(ID), by = .EACHI]
ID Max Make
<num> <num> <char>
1: 1 2 A, B
2: 2 3 A, B, C
3: 3 5 B
注意:這里我們假設兩個資料集都是data.table物件
資料
df1 <- structure(list(ID = c(1, 1, 2, 2, 2, 2, 3), Make = c("A", "B",
"A", "B", "B", "C", "B")), row.names = c(NA, -7L), class = c("data.table",
"data.frame"))
df2 <- structure(list(ID = c(1, 2, 3), Max = c(2, 3, 5)), row.names = c(NA,
-3L), class = c("data.table", "data.frame"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/488558.html
