Event,Time,Bid,Offer
Quote,0.458338,9.77,9.78
Order,0.458338,NA,NA
Order,0.458338,NA,NA
Order,0.458338,NA,NA
Quote,0.458363,9.78,9.79
Order,0.458364,NA,NA
我有一个像这样的数据框我想写一个有效的代码来填充NA以前的报价出价并询问,时间是排序的,只有报价包含出价和要求字段(最好是矢量化)
所以它变成了
Event,Time,Bid,Offer
Quote,0.458338,9.77,9.78
Order,0.458338,9.77,9.78
Order,0.458338,9.77,9.78
Order,0.458338,9.77,9.78
Quote,0.458363,9.78,9.79
Order,0.458364,9.78,9.79
谢谢
Rei*_*son 21
动物园包中的na.locf()功能是你的朋友.该代表"发扬光大最后一个".使用您的数据:locf
dat <- read.table(text = "Event,Time,Bid,Offer
Quote,0.458338,9.77,9.78
Order,0.458338,NA,NA
Order,0.458338,NA,NA
Order,0.458338,NA,NA
Quote,0.458363,9.78,9.79
Order,0.458364,NA,NA
", header = TRUE, sep = ",")
require(zoo)
dat2 <- transform(dat, Bid = na.locf(Bid), Offer = na.locf(Offer))
产生.
> dat2
  Event     Time  Bid Offer
1 Quote 0.458338 9.77  9.78
2 Order 0.458338 9.77  9.78
3 Order 0.458338 9.77  9.78
4 Order 0.458338 9.77  9.78
5 Quote 0.458363 9.78  9.79
6 Order 0.458364 9.78  9.79