gpt4 book ai didi

r - 使用 merge() 使用第二个数据帧中的值更新数据帧

转载 作者:行者123 更新时间:2023-12-02 16:22:55 24 4
gpt4 key购买 nike

我正在尝试弄清楚如何使用 merge() 来更新数据框。

以数据框foo为例

foo <- data.frame(index=c('a', 'b', 'c', 'd'), value=c(100, 101, NA, NA))

具有以下值

index value
1 a 100
2 b 101
3 c NA
4 d NA

和数据框

bar <- data.frame(index=c('c', 'd'), value=c(200, 201))

具有以下值:

 index value
1 c 200
2 d 201

当我运行以下 merge() 函数来更新 cd 的值时

merge(foo, bar, by='index', all=T)

它会产生以下输出:

 index value.x value.y
1 a 100 NA
2 b 101 NA
3 c NA 200
4 d NA 201

我希望 merge() 的输出避免在这个特定示例中创建 value.xvalue.y 但只保留原始的 value 列有没有简单的方法可以做到这一点?

最佳答案

使用data.table的最佳解决方案

library(data.table)
setDT(foo)
setDT(bar)
foo[bar, on="index", value:=i.value]
foo
# index value
#1: a 100
#2: b 101
#3: c 200
#4: d 201

[ data.table 方法中的第一个参数名为 i,因此我们可以使用 i 参数中引用表中的列i. 前缀。

关于r - 使用 merge() 使用第二个数据帧中的值更新数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3190118/

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