R 更新条件值的变量

R 更新条件值的变量,r,R,我有一个包含两列的数据框:Tick和Bid。这是金融工具的刻度数据。如果勾号列有值,则价格已上移/下移。“投标”列保存当前的投标价格。下面是一个例子: 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

我有一个包含两列的数据框:Tick和Bid。这是金融工具的刻度数据。如果勾号列有值,则价格已上移/下移。“投标”列保存当前的投标价格。下面是一个例子:

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

我尝试了不同的索引技术,但没有任何效果。

在“data.table”的开发版本中,有一个方便的函数
rleid
用于生成用于分组的
运行长度类型id

我们将“data.frame”转换为“data.table”(
setDT(Test)
)。在逻辑索引(
!is.na(勾选)
)上应用
rleid
,以获得每组“真/假/真”组的数字组,然后创建“最佳出价”作为“出价”列(
Bid[1L]
)的第一个值,该列由
rleid
中的数字分组进行分组

library(data.table)#v1.9.5+
setDT(Test)[, Best_Bid_Ex:= Bid[1L], rleid(!is.na(Tick))]
Test
#  Tick    Bid Best_Bid_Ex
# 1:   NA 393.75      393.75
# 2:   NA 393.75      393.75
# 3:   NA 393.75      393.75
# 4:   NA    394      393.75
# 5:   NA    394      393.75
# 6:    1     NA          NA
# 7:   NA    394         394
# 8:   NA    394         394
# 9:   NA    394         394
#10:   NA    394         394
#11:   NA 393.75         394
#12:   -1     NA          NA
#13:   NA 393.75      393.75
#14:   NA 393.75      393.75

安装devel版本的说明如下

谢谢。您是如何安装1.9.5版的?install.packages(“data.table”,version='1.9.5')将软件包安装到'C:/Users/Mike/Documents/R/win library/3.2'(因为'lib'未指定)download.file(url,destfile,method,mode=“wb”,…)中出现错误:未使用的参数(version=“1.9.5”)@MichaelHenning I更新了有关安装软件包的信息。
library(data.table)#v1.9.5+
setDT(Test)[, Best_Bid_Ex:= Bid[1L], rleid(!is.na(Tick))]
Test
#  Tick    Bid Best_Bid_Ex
# 1:   NA 393.75      393.75
# 2:   NA 393.75      393.75
# 3:   NA 393.75      393.75
# 4:   NA    394      393.75
# 5:   NA    394      393.75
# 6:    1     NA          NA
# 7:   NA    394         394
# 8:   NA    394         394
# 9:   NA    394         394
#10:   NA    394         394
#11:   NA 393.75         394
#12:   -1     NA          NA
#13:   NA 393.75      393.75
#14:   NA 393.75      393.75