如何在R中将新行从一个数据帧绑定到现有数据帧
我想知道如何根据每个表中的唯一值将一个数据帧df2中的新数据(行)附加到现有数据帧df1中。所以我有一个现有的数据框df1,它有历史数据,每一行都有一个唯一的值。然后,我从web中提取数据并将其放入一个新的数据框df2中。新数据帧还包括唯一值,该唯一值可能与df1中的唯一值匹配,也可能与df1中的唯一值不匹配 我想获取df2中所有具有唯一值但在df1中不存在的行,并将这些行附加到df1。我最初的想法是使用类似的代码:如何在R中将新行从一个数据帧绑定到现有数据帧,r,dataframe,merge,append,rbind,R,Dataframe,Merge,Append,Rbind,我想知道如何根据每个表中的唯一值将一个数据帧df2中的新数据(行)附加到现有数据帧df1中。所以我有一个现有的数据框df1,它有历史数据,每一行都有一个唯一的值。然后,我从web中提取数据并将其放入一个新的数据框df2中。新数据帧还包括唯一值,该唯一值可能与df1中的唯一值匹配,也可能与df1中的唯一值不匹配 我想获取df2中所有具有唯一值但在df1中不存在的行,并将这些行附加到df1。我最初的想法是使用类似的代码: ifelse(any(df1$unique\u val==df2$unique
ifelse(any(df1$unique\u val==df2$unique\u val),df1我们可以从data.table
使用rbindlist/unique
。我们将数据集放在列表中,使用rbindlist
(从data.table
)将列表中的数据集
绑定到单个数据表
,并从数据表
中获取唯一
行,该表还具有指定变量的by
选项
library(data.table)
unique(rbindlist(list(df1, df2)), by = "numb")
# numb rand unique_val
#1: 1 Toaster 1Toaster
#2: 2 Toaster 2Toaster
#3: 3 Toaster 3Toaster
#4: 4 Toaster 4Toaster
#5: 5 Toaster 5Toaster
#6: 6 Toaster 6Toaster
#7: 7 Radio 7Radio
使用unique(rbind(df1,df2))怎么样?嗨@Cath,@akrun解决了我的问题。我没有再问同样的问题——如果你不认为这是一个重复的问题,我提供了更多的细节,我仍然不相信这是一个重复的问题。充分阅读我的问题并使用merge(df1,df2,all.x=TRUE)
。它没有提供我想看到的解决方案,正如我在问题中所解释的那样。@D84n1nJ4只需执行完全联接:merge(df1,df2,by=c('numb','rand'),all.x=TRUE,all.y=TRUE)
corecting:outer-join,语法可以简化:merge(df1,df2,by=c('numb','rand'),all=TRUE)
不是我的投票(我不会在这里投票)但我认为这可能与。在我看来,你的答案虽然正确,但只是删除了一堆函数,而没有解释它是如何工作/解决问题的。这对未来的读者来说并不是真的有用,因为他们很难弄清楚什么是什么,所以在我看来它没有用处(我也认为是其他人的观点)。你要求解释,我只是给出了我的观点。我只是增加了精确度,因为我不能代表其他人说话。OP太长了,我看不懂,但这可能是相关的(因为同样的答案似乎合适):(几乎可以肯定不是傻瓜,因为OP there需要特定于包的答案。)@Frank看起来像个傻瓜。我会给它贴上标签