如何在R中有条件地筛选data.table
我在R中的data.table的两列中进行操作。我首先按日期、按1min和按EX筛选了datatable,但后来我意识到,我实际上不希望数据在1分钟内。在那个垃圾桶之前我什么都要 我以前的经历是:如何在R中有条件地筛选data.table,r,filter,data.table,conditional,R,Filter,Data.table,Conditional,我在R中的data.table的两列中进行操作。我首先按日期、按1min和按EX筛选了datatable,但后来我意识到,我实际上不希望数据在1分钟内。在那个垃圾桶之前我什么都要 我以前的经历是: bid_ask <- new_file[,list(btail=tail(BID,n=1),atail=tail(ASK,n=1)), by=c("DATE","by1min","EX")] 语法如下所示: DATE TIME_M EX SYM_SUFFIX BID
bid_ask <- new_file[,list(btail=tail(BID,n=1),atail=tail(ASK,n=1)), by=c("DATE","by1min","EX")]
语法如下所示:
DATE TIME_M EX SYM_SUFFIX BID ASK by1min
1: 2016-03-01 14400.02 P NA 60.00 95.00 14400
2: 2016-03-01 24889.07 T NA 60.01 65.00 24840
3: 2016-03-01 24889.25 T NA 60.01 64.99 24840
4: 2016-03-01 25085.24 T NA 60.01 64.99 25080
5: 2016-03-01 25085.36 T NA 62.50 64.99 25080
6: 2016-03-01 25103.37 T NA 62.51 64.99 25080
bid_ask <- new_file[, list(btail=tail(BID, n=1),atail=tail(ASK, n=1)), by=.(DATE, TIME_M < by1min, EX)]
bid_ask
# DATE TIME_M EX btail atail
#1: 2016-03-01 FALSE P 60.00 95.00
#2: 2016-03-01 FALSE T 62.51 64.99
#3: 2016-03-01 TRUE T 62.51 64.99
#4: 2016-03-01 TRUE P 60.00 95.00
嗨@python_新手-如果不知道data.table是什么样子,就无法帮助您。请查看并更新您的问题。对不起。。。我已经添加了数据。我想做的是在一分钟前获取每个交易所最后一次发布的出价/要求。但是我很难用“by”。如您所见,我可以在1分钟内过滤数据,但不能在1分钟内过滤数据。您希望如何过滤数据?预期的最终结果是什么?是您编写的代码没有运行的问题吗?您发布的数据结构不是
数据表
,它看起来像是由dplyr
代码生成的tible
。通过运行as.data.table(新的\u文件)
或as.data.table(as.data.frame(新的\u文件))
可以将其转换为data.table
。我将数据更新为data.table,而不是以前的数据。我想按“日期”过滤数据,然后按低于1分钟阈值的所有内容过滤(例如,我尝试了这个方法,但它给了我一个有点奇怪的结果。btail和atail的数字都是一样的。你能dput
你的数据吗?
bid_ask <- new_file[, list(btail=tail(BID, n=1),atail=tail(ASK, n=1)), by=.(DATE, TIME_M < by1min, EX)]
bid_ask
# DATE TIME_M EX btail atail
#1: 2016-03-01 FALSE P 60.00 95.00
#2: 2016-03-01 FALSE T 62.51 64.99
#3: 2016-03-01 TRUE T 62.51 64.99
#4: 2016-03-01 TRUE P 60.00 95.00
dat <- fread("DATE TIME_M EX SYM_SUFFIX BID ASK by1min
2016-03-01 14400.02 P NA 60.00 95.00 14400
2016-03-01 24889.07 T NA 60.01 65.00 24840
2016-03-01 24889.25 T NA 60.01 64.99 24840
2016-03-01 25085.24 T NA 60.01 64.99 25080
2016-03-01 25085.36 T NA 62.50 64.99 25080
2016-03-01 25103.37 T NA 62.51 64.99 25080
2016-03-01 25000 T NA 62.51 64.99 25080
2016-03-01 14399 P NA 60.00 95.00 14400")