gpt4 book ai didi

r - 将值从一个数据帧传输到另一个数据帧

转载 作者:行者123 更新时间:2023-12-02 09:01:49 24 4
gpt4 key购买 nike

我有两个数据框。第一个看起来像这样:

value <- seq(1, 100, length.out=20)
df1 <- data.frame(id=as.character(1:20),
value=value,
stringsAsFactors=F)

我有第二个数据框,如下所示

df2 <- data.frame(id=as.character(c(1:5, 21:23)),
v2=NA,
stringsAsFactors=F)

我需要将值从df1传输到df2,但仅限于df1$id == df2$id。所以我需要的数据框是:

df2Needed <- data.frame(id=as.character(c(1:5, 21:23)),
v2=c(value[1:5], NA, NA, NA),
stringsAsFactors=F)

有办法做到这一点吗?

最佳答案

使用data.table:

require(data.table)
dt1 <- data.table(df1, key="id")
dt2 <- data.table(df2)

dt1[dt2$id, value]

# id value
# 1: 1 1.000000
# 2: 2 6.210526
# 3: 3 11.421053
# 4: 4 16.631579
# 5: 5 21.842105
# 6: 21 NA
# 7: 22 NA
# 8: 23 NA

或使用基本合并作为评论中提到的@TheodoreLytras:

# you don't need to have `v2` column in df2
merge(df2, df1, by="id", all.x=T, sort=F)

# id v2 value
# 1 1 NA 1.000000
# 2 2 NA 6.210526
# 3 3 NA 11.421053
# 4 4 NA 16.631579
# 5 5 NA 21.842105
# 6 21 NA NA
# 7 22 NA NA
# 8 23 NA NA

关于r - 将值从一个数据帧传输到另一个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15310140/

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