c# - 按组填写缺失日期

标签 c# sql-server r

我有一个看起来像这样的数据集:

shop_id,item_id,time,value
150,1,2015-07-10,3
150,1,2015-07-11,5
150,1,2015-07-13,2
150,2,2015-07-10,15
150,2,2015-07-12,12

在由“shop_id 和”item_id 定义的每个组中,缺少日期。

我希望将这个不规则的时间序列扩展为每个组内具有连续日期的常规时间序列:

shop_id,item_id,time,value
150,1,2015-07-10,3
150,1,2015-07-11,5
150,1,2015-07-12,0 # <~~ added
150,1,2015-07-13,2
150,2,2015-07-10,15
150,2,2015-07-11,0 # <~~ added
150,2,2015-07-12,12

对于添加的日期,相应的值应该为零。尽管我读过非常相似的问题(使用 R 或 SQL 合并),但我看到的大多数解决方案都不涉及 GROUP BY。

基本上我可以访问 SQL 数据库/我可以导出为 CSV 以进行操作,最好是在 C# 中。希望找到可以执行此类数据操作但找不到的 C# 库。

如有任何建议或帮助,我们将不胜感激!

最佳答案

您可以使用 R 中的 data.table。假设 'time' 列属于 'Date' 类,

library(data.table)#v1.9.5+
DT1 <- setDT(df1)[, list(time=seq(min(time), max(time), by ='day')),
                    by =.(shop_id, item_id)]
setkeyv(df1, names(df1)[1:3])[DT1][is.na(value), value:=0]
#   shop_id item_id       time value
#1:     150       1 2015-07-10     3
#2:     150       1 2015-07-11     5
#3:     150       1 2015-07-12     0
#4:     150       1 2015-07-13     2
#5:     150       2 2015-07-10    15
#6:     150       2 2015-07-11     0
#7:     150       2 2015-07-12    12

在开发版本中,您也可以在不设置“ key ”的情况下执行此操作。安装开发版本的说明是 here

 df1[DT1, on =c('shop_id', 'item_id', 'time')][is.na(value), value:=0]
 #   shop_id item_id       time value
 #1:     150       1 2015-07-10     3
 #2:     150       1 2015-07-11     5
 #3:     150       1 2015-07-12     0
 #4:     150       1 2015-07-13     2
 #5:     150       2 2015-07-10    15
 #6:     150       2 2015-07-11     0
 #7:     150       2 2015-07-12    12

或者正如@Arun 所建议的,一个更有效的选择是

 DT1[, value := 0L][df1, value := i.value, on = c('shop_id', 'item_id', 'time')]
 DT1 

关于c# - 按组填写缺失日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31502591/

相关文章:

c# - Unity 的垃圾收集器——为什么是非分代和非压缩的?

c# - 在 C# 或 Java 中抽象一个 id 属性

sql-server - 如何让 CTE 在 T-SQL/MSSQL 中再次搜索我的数据?

sql-server - SQL Server : after using GROUP BY with CASE, ORDER BY 不起作用

c++ - 如果没有 libRcpp.so 文件,我如何链接 Rcpp?

c# - 在 C# 中获取注册表项和值

javascript - 使用 javascript 下拉列表

sql - 查找订单中文章的累计出现次数

r - 在 R 中旋转数据

r - 如何绘制堆积点直方图?