【发布时间】:2018-07-29 02:43:51
【问题描述】:
我在 R 中的 data.table 的两列中进行操作。我首先按 DATE、按 1 分钟和按 EX 过滤了数据表,但后来我意识到我实际上不希望 1 分钟内的数据.我想要那个垃圾箱之前的所有东西。
我之前有的是:
bid_ask <- new_file[,list(btail=tail(BID,n=1),atail=tail(ASK,n=1)), by=c("DATE","by1min","EX")]
现在我想做这样的事情:
bid_ask <- new_file[,list(btail=tail(BID,n=1),atail=tail(ASK,n=1)), by=c("DATE",TIME_M[TIME_M<by1min],"EX")]
但这似乎不是 data.table 的结构。
有人知道如何在“by”中进行条件过滤吗?
我的数据如下所示:
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
【问题讨论】:
-
嗨@python_newbie - 不知道你的data.table是什么样子就不可能帮助你。请查看stackoverflow.com/questions/5963269/… 并更新您的问题。
-
对不起...我已经添加了数据。我想做的是获得每个交易所的最后发布的出价/要价,直到一分钟的阈值。但是我很难使用“by”。如您所见,我可以过滤“在”1 分钟垃圾箱内,但不能“直到”1 分钟垃圾箱
-
你想如何过滤你的数据?预期的最终结果是什么?
-
是你写的代码运行不起来的问题吗?您发布的数据结构不是
data.table,它看起来像dplyr代码生成的tibble。您应该能够通过运行as.data.table(new_file)或as.data.table(as.data.frame(new_file))将其转换为data.table。 -
我将数据更新为 data.table,而不是之前的数据。我想按“日期”过滤数据,然后按低于 1 分钟阈值的所有内容(例如,
标签: r filter data.table conditional