更新条件值的变量

时间:2015-07-29 20:49:01

标签: r

我有一个包含两列的数据框:Tick和Bid。这是金融工具的刻度数据。如果Tick列的值已经上移/下移。出价列保留当前出价。这是一个例子:

Test <- data.frame(Tick=c(NA, NA, NA ,NA, NA , "1", NA, NA, NA,
                          NA, NA, "-1",NA, NA),
                   Bid=c("393.75", "393.75" ,"393.75" ,"394", "394",
                          NA,"394" ,"394","394","394","393.75",
                          NA, "393.75", "393.75"))

我想创建一个我称之为Best_Bid_Ex的变量,该变量在发生勾号事件(is.na(Test$Tick == FALSE))后保留第一个价格的值,并在下一个事件时使用新的出价重置。

Test$Best_Bid_Ex <- c("393.75", "393.75" ,"393.75" ,"393.75", 
"393.75", NA,"394" ,"394","394","394","394", NA, "393.75", "393.75")

我尝试了不同的索引技术,但我无法正常工作。

1 个答案:

答案 0 :(得分:3)

在'data.table'的devel版本中,有一个方便的函数yield,用于生成rleid列以进行分组。

我们将'data.frame'转换为'data.table'(run-length_type_id)。在逻辑索引(setDT(Test))上应用rleid以获取每组“TRUE / FALSE / TRUE”组的数字组,然后创建“Best_Bid_Ex”作为“出价”列的第一个值( !is.na(Tick))按Bid[1L]的数字分组分组。

rleid

安装devel版本的说明是here