根据先前数据将数据添加到数据表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据先前数据将数据添加到数据表相关的知识,希望对你有一定的参考价值。

我的第一篇文章,希望我做得对。

我有一张桌子如下:

Year    Day Amount
1990    1   200
1990    363 2058
1993    1   10
1993    71  564
1993    360 931

我想在此表中添加数据行,以便在表中每个'Year'的最大'Day'和364之间的所有数字都有一个行条目,'Amount'中的相应值将是最大值每年的“金额”。结果数据应为:

Year    Day Amount
1990    1   200
1990    363 2058
1993    1   10
1993    71  564
1993    360 931
1990    364 2058
1993    361 931
1993    362 931
1993    363 931
1993    364 931

有任何想法吗?

答案

利用data.table[i, j, by]如何让我们在j中为每组by评估表达式:

library(data.table)


DT <- data.table(
  Year = c(1990, 1990, 1993, 1993, 1993),
  Day  = c(1, 363, 1, 71, 360),
  Amount = c(200, 2058, 10, 564, 931)
)


DT[
  order(Day),
  {
    extended_days <- seq(max(Day) + 1, 364)
    extended_amounts <- rep(max(Amount), length(extended_days))
    list(
      Day = c(Day, extended_days),
      Amount = c(Amount, extended_amounts)
    )
  },
  keyby = Year
]
#     Year Day Amount
#  1: 1990   1    200
#  2: 1990 363   2058
#  3: 1990 364   2058
#  4: 1993   1     10
#  5: 1993  71    564
#  6: 1993 360    931
#  7: 1993 361    931
#  8: 1993 362    931
#  9: 1993 363    931
# 10: 1993 364    931

以上是关于根据先前数据将数据添加到数据表的主要内容,如果未能解决你的问题,请参考以下文章

是否有一个 R 函数可以根据条件计算数据框中先前日期的数量

尝试将记录添加到具有先前创建的记录的表时出错

根据先前的聚类集预测新数据

应用程序在主要活动中关闭onBackPressed

根据先前数据的概率生成数据组合

删除先前的标记并在更新的 lat lng 中添加标记