gpt4 book ai didi

使用具有条件的另一个数据帧替换一个数据帧中多列的值

转载 作者:行者123 更新时间:2023-12-04 12:06:47 25 4
gpt4 key购买 nike

嗨,我有两个数据框如下:

df1: 
ID x y z
1 a b c
2 a b c
3 a b c
4 a b c

和 df2:
ID   x    y     
2 d NA
3 NA e

我追求的是这样的结果:

df1:
    ID   x    y     z     
1 a b c
2 d b c
3 a e c
4 a b c

我一直在尝试按照其他一些帖子的建议使用 match 函数,但我一直遇到问题,我的 df1 数据框被 df2 中的 NA 值替换。
这是我一直在使用但没有运气的代码
for (i in names(df2)[2:length(names(df2))]) {
df1[i] <- df2[match(df1$ID, df2$ID)]
}

谢谢

最佳答案

您的代码对我不起作用,所以我对其进行了一些更改,但它有效。如果您从外部文件读取数据,请使用 stringAsFactor = FALSE当你阅读它时,你就不会遇到问题。

df1 = data.frame("ID" = 1:4,"x" = rep("a",4), "y" =rep("b",4),"z" = rep("c",4),
stringsAsFactors=FALSE)
df2 = data.frame("ID" = 2:3,"x" = c("d",NA), "y" = c(NA,"e"),stringsAsFactors=FALSE)

for(i in 1:nrow(df2)){
new_data = df2[i,-which(apply(df2[i,],2,is.na))]
pos = as.numeric(new_data[1])
col_replace = intersect(colnames(new_data),colnames(df1))
df1[pos,col_replace] = new_data
}

关于使用具有条件的另一个数据帧替换一个数据帧中多列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47706240/

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