我的第一篇文章,希望我做得对。
我有一张表格如下:
Year Day Amount
1990 1 200
1990 363 2058
1993 1 10
1993 71 564
1993 360 931
我想在此表中添加数据行,以便在最大日期和日期之间存在所有数字的行条目。每年'年在表格和364中,以及“金额”中的相应值将是最大的金额'每年。结果数据应为:
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
有什么想法吗?
答案 0 :(得分:1)
利用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