gpt4 book ai didi

用其他数据表替换数据表的子集

转载 作者:行者123 更新时间:2023-12-04 17:51:45 27 4
gpt4 key购买 nike

我觉得这个问题有点傻,但我只想做一些我知道如何处理 data.frame 的事情,但我还没有在 R 中找到一个很好的方法。所有其他类似的问题似乎更复杂对于我的想法。我只想根据行索引并选择一些列,用另一个 data.table 替换 data.table 的一个子集。

MWE跟随

x.df <- data.frame(a=c(1,2,3),
b=c(2,NA,NA),
c=c(3,NA,NA))
x.dt <- data.table(x.df)
x.df.replace<- data.frame(b=c(10,11), c=c(22,21))
x.dt.replace<- data.table(x.df.replace)

这就像数据框中的魅力
x.df[is.na(x.df$b),2:3]<-x.df.replace

另一方面,我想按名称调用列,我只知道如何单独替换每一列,而不是联合替换
x.dt[is.na(b),]
x.dt[is.na(b),c:=x.dt.replace[,c]]
x.dt[is.na(b),b:=x.dt.replace[,b]]
x.dt[is.na(b), list(b,c)]<-x.dt.replace
x.dt[is.na(b), list(b,c):=x.dt.replace]

最佳答案

我遇到了同样的问题,我遇到了这个问题而没有答案。上面的评论帮助我找到了问题的解决方案,所以我决定把它贴在这里。可能只是 data.table 之间的区别版本(我使用的是 1.11.8 版),因为这是一个相对较旧的问题。
该解决方案使用 ()而不是 .()list()声明要替换的列名:

colunas <- c("b","c")
x.dt[is.na(b), (colunas) := x.dt.replace]
希望这是有用的

关于用其他数据表替换数据表的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44161180/

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