用以前的值替换缺失值 [英] Replace missing value with previous value

查看:32
本文介绍了用以前的值替换缺失值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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,时间是排序的,只有报价包含出价和询价字段(最好是矢量化)

I have a Data frame like this I want to write a efficient code to fill up the NA with previous Quote bid and ask, Time is sorted, and only Quote contains bid and ask field (preferably vectorization)

就变成了

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

谢谢

推荐答案

zoo 包中的 na.locf() 函数是您的朋友.locf 代表最后一个结转".使用您的数据:

The na.locf() function in the zoo package is your friend here. The locf stands for "last one carried forward". With your data:

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

这篇关于用以前的值替换缺失值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆