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