R数据帧组合

时间:2014-06-09 15:01:30

标签: r dataframe

我知道这是一个常见的问题。但是,在R中组合数据帧时的常见问题是存在重叠列,并且列需要函数。

我的问题并非如此。我目前在R中有2个数据帧。除了两个共有的ID列之外,它们具有完全不同的列集。

有一个主要和次要数据集(这很重要,因为并非主要数据库中的所有值都存在于辅助数据集中)

我想从辅助数据库添加2个列到主数据帧。

所以我使用的当前方法是迭代主要的所有行。检查它是否存在于辅助节点中,如果存在,则按

添加行
primary$newCol1 <- Secondary$newCol1[Matching stuff here]

主要问题是数据集非常庞大,每个数据集大约有900万行,而且列数很多。因此,这个过程非常缓慢。我相信我有一个正确的解决方案。但就数天而言,运行时是不可能的。

一个简单的例子是

rowC = nrow(dataframe1)
for(i in 1:rowC){
matchedRow = Dataframe1$id[i] == dataframe2$id
if dataframe1$id[i] %in% dataframe2$id{
dataframe1$newcol[i] <- dataframe2$newcol[matchedRow]
}
else{dataframe1$newcol[i]<- 'Unknown'}

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

尝试合并功能。

myResult = merge(dataframe1, dataframe2)

在查看帮助页面之后,您将对所有内容进行排序,但是知道您可以指定要加入的列(在这种情况下,这将是常见的“id”列),您可以指定外部联接。在您的情况下,您可以考虑按如下方式对数据框中的列数进行子集化:

myResult = merge(dataframe1, dataframe2[, c(columnIwant, anotherColumn)])