私はマージ時に条件付きでR data.table列を置き換える方法は?
merged = merge(dt1, dt2, by="index_column", all=TRUE)
結果data.table
でのみ共有index_column
にdata.tableこれら二つをマージする際、次の2 data.tables
library(data.table)
dt1 = data.table(index_column = c(12, 17, 29, 34, 46), column1 = c("dog", "cat", "bird", "elephant", "bird"), column2 = c(482, 391, 567, 182, 121))
dt2 = data.table(index_column = c(17, 29, 46), column1 = c("cat", "penguin", "bird"))
> dt1
index_column column1 column2
1: 12 dog 482
2: 17 cat 391
3: 29 bird 567
4: 34 elephant 182
5: 46 bird 121
> dt2
index_column column1
1: 17 cat
2: 29 penguin
3: 46 bird
を持っているのです。
index_column column1.x column2 column1.y
1: 12 dog 482 NA
2: 17 cat 391 cat
3: 29 bird 567 penguin
4: 34 elephant 182 NA
5: 46 bird 121 bird
私はcolumn1.x
の値をcolumn1.y
の値に置き換えることに興味があります(0でない場合)。値の大部分は同じですが、そうでないもの(例:鳥/펭귄)は交換する必要があります。
これはif文になります。
if ((merged$column1.x != merged$column1.y) & !is.na(merged$column1.y)){
merged$column1.x = merged$column1.y
}
merged$column1.y = NULL
私の懸念は、これは非常にdata.table
解決策ではないということです。 data.table
に何百万行もある場合は、うまく拡張できません。
R data.tableの別の列に基づいて1つの列の値を条件付きで置き換えるにはどうすればよいでしょうか? NAを無視して、単に一方を他方に置き換える方が効率的ですか?
'DTのようなものを
on
ベースのアプローチを使用することができますか'? – SymbolixAU