我们来看以下数据:
dt <- data.table(TICKER=c(rep("ABC",10),"DEF"),
PERIOD=c(rep(as.Date("2010-12-31"),10),as.Date("2011-12-31")),
DATE=as.Date(c("2010-01-05","2010-01-07","2010-01-08","2010-01-09","2010-01-10","2010-01-11","2010-01-13","2010-04-01","2010-04-02","2010-08-03","2011-02-05")),
ID=c(1,2,1,3,1,2,1,1,2,2,1),VALUE=c(1.5,1.3,1.4,1.6,1.4,1.2,1.5,1.7,1.8,1.7,2.3))
setkey(dt,TICKER,PERIOD,ID,DATE)
Run Code Online (Sandbox Code Playgroud)
现在,对于每个股票代码/期间组合,我需要在新列中添加以下内容:
PRIORAVG:每个ID的最新VALUE的平均值,不包括当前ID,只要不超过180天.PREV:来自相同ID的先前值.结果应如下所示:
TICKER PERIOD DATE ID VALUE PRIORAVG PREV
[1,] ABC 2010-12-31 2010-01-05 1 1.5 NA NA
[2,] ABC 2010-12-31 2010-01-08 1 1.4 1.30 1.5
[3,] ABC 2010-12-31 2010-01-10 1 1.4 1.45 1.4
[4,] ABC 2010-12-31 2010-01-13 1 1.5 1.40 1.4
[5,] ABC 2010-12-31 2010-04-01 1 1.7 1.40 1.5
[6,] ABC 2010-12-31 2010-01-07 2 1.3 1.50 NA
[7,] ABC 2010-12-31 2010-01-11 2 1.2 1.50 1.3
[8,] ABC 2010-12-31 …Run Code Online (Sandbox Code Playgroud) 虽然BigQuery Standard SQL文档提到了函数REGEXP_MATCH[1],但在运行查询时似乎不可用,Web界面返回:
错误:找不到函数:REGEXP_MATCH
什么是使用它的替代方案?
[1] https://cloud.google.com/bigquery/sql-reference/functions-and-operators#regexp_match