【问题标题】:Conditionally dividing rows from two different data frames in R有条件地从R中的两个不同数据帧中划分行
【发布时间】:2016-10-07 05:50:49
【问题描述】:

我目前有两个表,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) 我的代码有什么明显的错误吗?

【问题讨论】:

标签: r vectorization


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-01-30
    • 2021-11-09
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 2015-03-16
    • 2021-07-19
    相关资源
    最近更新 更多