2014-03-31 1 views
8
summary(DF) 

>fx_code   date    fx_spot    fx_fwd   implied_fx_vol 
AUD : 171 Min. :2000-01-31 Min. : 0.394 Min. :-320.000 Min. : 1.000 
BRL : 171 1st Qu.:2003-07-31 1st Qu.: 1.623 1st Qu.: -2.615 1st Qu.: 7.180 
CAD : 171 Median :2007-02-28 Median : 6.117 Median : 6.070 Median : 9.842 
CHF : 171 Mean :2007-02-28 Mean : 449.477 Mean : 63.569 Mean :10.656 
CLP : 171 3rd Qu.:2010-09-30 3rd Qu.: 43.475 3rd Qu.: 64.055 3rd Qu.:12.809 
COP : 171 Max. :2014-03-31 Max. :12360.000 Max. :1438.800 Max. :62.810 
(Other):4275           NA's :310  NA's :783  

그때 내가 이전 기간na.locf는

DF2 <- ddply(DF, .(fx_code), na.locf) 
    summary(DF2) 

> fx_code    date    fx_spot    fx_fwd   implied_fx_vol  
Length:5301  Length:5301  Length:5301  Length:5301  Length:5301  
Class :character Class :character Class :character Class :character Class :character 
Mode :character Mode :character Mode :character Mode :character Mode :character  

이 문자 형식에 이르기까지 모든 변환에서 값이 누락 된 값을 작성하여 문자 숫자 데이터를 변환합니다. 이 문제를 해결하는 방법에 대한 아이디어?> 미리 감사

답변

4

1) 동물원 개체, 벡터와 행렬하지 data.frames에na.locf 작품, 각각의 컬럼에 별도로 적용되는이 시도하고 데이터를 재구성 .frame :

ddply(DF, .(fx_code), function(x) replace(x, TRUE, lapply(x, na.locf)) 

2) 나이 :

na.locf.data.frame <- 
    function(object, ...) replace(object, TRUE, lapply(object, na.locf, ...)) 
ddply(DF, .(a), na.locf) 

3)의 날짜하면은 fx_code 내에서 고유하며 동물원 개체가 행렬 또는 벡터를 기반으로하기 때문에 넓은 동물원 개체로 표시 될 수 있지만 긴 개체로 표시 될 수 없으므로 해당 열은 모두 같은 클래스 여야합니다. DF (

DF <- data.frame(a = c("a", "a", "b", "b"), b = Sys.Date() + 0:3, c = 1:4) 
+0

감사합니다. df.zoo <- zoo (df) – ec0n0micus

+0

과 같은 작업을 수행하여 데이터 프레임을 동물원 개체로 변환 할 수 있습니까? Doo를 동물원 개체로 만드는 방법에 대한 답변을 추가했습니다. 첫 번째 해결 방법은 –

+0

입니다. 꼭 시도해야합니까? 더 이상 plyr에 ddplyr이 존재하지 않습니다. (http://cran.r-project.org/web/packages/plyr/plyr.pdf) – ec0n0micus

0

또한 colwise (na.locf)를 사용할 수 있습니다 :

z <- read.zoo(DF, split = 1, index = 2) 
na.locf(z) 

예를 들어,이 그것을 시도 : 날짜가 fx_code 내에서 고유 경우이 작업을 할 표시된 데이터 프레임의 경우) 클래스 변환을 피하기 위해.