2011-03-14 59 views
0

有沒有辦法使用na.locf功能,填補了NA值的橫截面(面板)的時間序列數據的方法。最後一次觀察結轉(na.locf)在面板(橫截面)時間序列

我有一個面板數據設置類似於年的數據,建立類似以下內容:

library(zoo) #actual [r] code and data! 
library(plm) 
data(Produc) 
a<-data.frame(Produc) 
b<-subset(a,state=="WYOMING"|state=="WISCONSIN",select = state:hwy) #limit to an easy subset) 

數據具有抑制(即缺少不是由政府數據機構公佈價值),我想只需拉下下一個觀察值即可填入NA值。

b[[2,4]]<-NA 
b[[17,4]]<-NA 
b[[18,3]]<-NA 
c<-na.locf(b,na.rm=FALSE,fromLast=FALSE) 

使用na.locf功能將填補NA的,但沒有將拉動數據不正確地填寫在一個城市的同一個城市的第一年data.I去年停止我開始覺得我需要將數據幀分成單獨的城市幀。

+0

你可以創建一個小例子,數據集,顯示你的「年到年鎮壓」等是什麼意思?這將有助於您的問題得到解答。 –

+0

-1模糊/不清楚。數據不可用或充分說明。未顯示所需的輸出。 –

+0

需要的是可以讀入R. –

回答

0

當你懷疑,最簡單的方法將是要麼將數據幀分成沿城市或年度尺寸(例如使用split)單獨的數據幀,使用na.locf,然後unsplit

另外,如果你組織你的數據與市作爲rownames和年份colnames(反之亦然),並有矩陣的每個數據的列表,它可能會更容易。在這種情況下,您只需使用apply在適當維度上進行前向填充。

+1

啊哈!最後_groked_一點ddply! 'plyr < - ddply(b,c(「state」),function(df)na.locf(df,na.rm = FALSE,framLast = TRUE)' – AzadA

2

大廈AzadA的評論

ddply識別數據幀中的特定子集,由您選擇的變量(一個或多個)的級別應用需要的功能都在該子集的作品。

庫(plyr) new.data < -a $(瓦爾要應用的功能,和VAR需要秩序和子集) 格式:ddply(data.frame,VAR(縣)進行子集,功能,另外的功能的命令)

new.data < - ddply(A,A $城市,na.locf)#apply通過城市矢量爲了所有na.locf瓦爾

一個$ b < - new.data $ b#爲每個變量交換新舊信息

For more info:http://cran.r-project.org/web/packages/plyr/plyr.pdf