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