有条理地将行与R中的两个不同数据帧分开

时间:2016-06-07 10:57:19

标签: r vectorization

我目前有两个表endingStocktotalUsage,每个表中的每一行都有一个日期条目。我想迭代每个表的行,比较日期,如果日期相同,我想从endingStock和totalUsage中提取变量unit value的值,并附加endingstock$unitvalue / totalUsage$unitvalue到第三个表ratioTable

在此网站上使用了大量不同的答案,我尝试将ratioTable设置为NULL并逐行构建表格,使用以下循环:

for (i in 1:nrow(endingStocks)) {
  for (j in 1:nrow(useTotals)) {
    if (endingStocks[i,]$valuedate == useTotals[j,]$valuedate) {
      ratio = endingStocks[i,]$`unit value` / useTotals[j,]$`unit value`
      newrow <- c(endingStocks[i,]$valuedate, ratio)
      ratioTable <- rbind(ratioTable, newrow)
    }
  }
}

然而,这似乎是在跳过价值观。每个数据框都有200多个条目,这些条目在日期方面大致匹配,因此结果ratioTable应具有相同的条目顺序,但只有24个。

1)有没有办法使用矢量化操作有效地做到这一点?

2)我的代码是否有任何明显的错误?

1 个答案:

答案 0 :(得分:0)

我猜测没有可重现的例子,但我认为使用merge会做你想做的事情:

ratioTable = merge(endingStocks, totalUsage, by="valuedate")

然后,您可以根据需要整理新表格。