gpt4 book ai didi

r - 如何在合并时有条件地替换 R data.table 列?

转载 作者:行者123 更新时间:2023-12-02 20:44:21 26 4
gpt4 key购买 nike

<分区>

我有以下两个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

在合并这两个 data.table 时仅在共享的 index_column

merged = merge(dt1, dt2, by="index_column", all=TRUE)

生成的 data.table 是:

   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.y 的值替换 column1.x 的值,如果它们不是 NA。大多数值将相同,但应替换那些不相同的值(例如鸟/企鹅)。

可以通过 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 中的另一列有条件地替换一列的值?忽略 NA 简单地用一个替换另一个更有效吗?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com