tôi có các dữ liệu sau:Làm thế nào để hợp nhất tất cả các yếu tố của một danh sách với một bảng số liệu về tình trạng
library(data.table)
dt1 <- data.table(var1 = c("wk1","wk1","wk2"),
var2 = c(1,2,3))
dt2 <- data.table(var3 = c("a","b","c"),
var2 = c(1,2,3))
lista <- list(dt1,dt2)
dt_main <- data.table(var1 = c("wk1","wk2"),
var4 = c(100,200))
Tôi muốn merge
tất cả các yếu tố của lista
có chứa biến var1
với dt_main
data.table
, vì vậy trong cuối tôi muốn lista
trông như thế này:
dt1 <- data.table(var1 = c("wk1","wk1","wk2"),
var2 = c(1,2,3),
var4 = c(100,100,200))
dt2 <- data.table(var3 = c("a","b","c"),
var2 = c(1,2,3))
lista <- list(dt1,dt2)
tôi đã cố gắng
mapply(function(X,Y){
if("var1"%in%names(X)){
X <- merge(X,Y,by="var1")
}
},X=lista,Y=dt_main)
nhưng không hoạt động. Bất kỳ giúp đỡ?
hơi muộn, b ut tôi đã đưa ra một biến thể hơi khác: 'lapply (lista, function (x) if ('var'% in% names (x)) x [dt_main, on = 'var1', var4: = var4] else x) ' – Jaap
Một cách hay khác để hợp nhất :). Muốn đăng câu trả lời @Jaap? – LyzandeR
thực hiện :-) (và sửa một loại trong giải pháp của tôi) – Jaap