0

我是 Deedle 和 C# 的新手。

我使用 QuandlCS.Connection、-.Interfaces、-.Requests、-.Types 和 NewtonSoft.Json、-.Json.Linq 以 JSON 格式从 Quandl 加载期货数据,然后将其转换为 Deedle 数据系列:

QuandlDownloadRequest requestNG1 = new QuandlDownloadRequest();
requestNG1.APIKey = "myAPIKey";
requestNG1.Datacode = new Datacode("Chris", "CME_NG1");
requestNG1.Format = FileFormats.JSON;
requestNG1.Frequency = Frequencies.Daily;
requestNG1.Sort = SortOrders.Ascending;
requestNG1.StartDate = new Datetime(2010, 01, 01);
requestNG1.EndDate = DateTime.Now.Date;
IQuandlConnection connectionNG1 = new QuandlConnection();
string dataNG1 = connectionNG1.Request(requestNG1);
dynamic jasonNG1 = JsonConvert.DeserializeObject(dataNG1);

//create data series
var datePriceDS = new SeriesBuilder<DateTime, double>();

for each(var item in jsonNG1.dataNG1)
{
   datePriceDS.Add(Convert.ToDateTime(item[0]), Convert.ToDouble(item[6]) );

}

var dataSeriesNG1 = datePriceDS.Series;

“dataSeriesNG1”的键仅包含合约交易的日期。我需要使用 2010 年 1 月 1 日和 DateTime.Now 之间的所有日历日期创建另一个数据系列,并将 NA 值分配给不存在价格数据的日期键。有没有办法使用 LINQ 做到这一点?提前谢谢了!

4

1 回答 1

1

If you can generate IEnumerable<DateTime> with the dates that you are interested in, then you can use the Realign method on the series object. This will perform a lookup for each of the new keys and treat all other values as missing.

var newKeys = /* Some C# trick to generate date range */;
var dailySeries = dataSeriesNG1.Realign(newKeys);
于 2015-09-11T18:00:07.830 回答