Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中有条件地筛选data.table_R_Filter_Data.table_Conditional - Fatal编程技术网

如何在R中有条件地筛选data.table

如何在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

我在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   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")