如何在R中将新行从一个数据帧绑定到现有数据帧

如何在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

我想知道如何根据每个表中的唯一值将一个数据帧df2中的新数据(行)附加到现有数据帧df1中。所以我有一个现有的数据框df1,它有历史数据,每一行都有一个唯一的值。然后,我从web中提取数据并将其放入一个新的数据框df2中。新数据帧还包括唯一值,该唯一值可能与df1中的唯一值匹配,也可能与df1中的唯一值不匹配

我想获取df2中所有具有唯一值但在df1中不存在的行,并将这些行附加到df1。我最初的想法是使用类似的代码:


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看起来像个傻瓜。我会给它贴上标签