2014-02-13 1 views
1

I는 다음과 같습니다 데이터가 있습니다어떻게 체계적으로 R 데이터 프레임에 값을 이전과 <NA> 행을 대체하는

이 가
FOO,yyy,Unigene126925_All,Unigene137063_All,0.238087 
,,Unigene126925_All,Unigene24551_All,0.374231 
,,Unigene126925_All,Unigene31835_All,0.367897 
BAR,xxx,Unigene126925_All,Unigene165366_All,0.247844 
,,Unigene126925_All,Unigene111784_All,0.344493 
가 다음 코드로 읽은 후

어떤 :

dt <- read.csv("http://dpaste.com/1612639/plain/",header=FALSE,fill=FALSE,na.strings = "") 
# The <NA> coercion here is intentional. 

그것은 생산을 이 결과 :

> dt 
    V1 V2    V3    V4  V5 
1 FOO yyy Unigene126925_All Unigene137063_All 0.238087 
2 <NA> <NA> Unigene126925_All Unigene24551_All 0.374231 
3 <NA> <NA> Unigene126925_All Unigene31835_All 0.367897 
4 BAR xxx Unigene126925_All Unigene165366_All 0.247844 
5 <NA> <NA> Unigene126925_All Unigene111784_All 0.344493 

내가 원하는 것은를 대체하는 것입니다. 이 산출 이전 값 10 개 세포 : 2 행 NA를 갖는 상기 예에서

FOO yyy Unigene126925_All Unigene137063_All 0.238087 
FOO yyy Unigene126925_All Unigene24551_All 0.374231 
FOO yyy Unigene126925_All Unigene31835_All 0.367897 
BAR xxx Unigene126925_All Unigene165366_All 0.247844 
BAR xxx Unigene126925_All Unigene111784_All 0.344493 

는,이 값을 포함하는 앞의 행에서 V1 및 V2 컬럼의 값을 취한다.

R에서 어떻게 달성 할 수 있습니까?

답변

4

당신은 na.locf 기능 (패키지 zoo)를 사용할 수 있습니다 :

library(zoo) 

dt$V1 <- na.locf(dt$V1) 
dt$V2 <- na.locf(dt$V2) 

또는 한 번에 :

dt <- na.locf(dt) 

은 취득

> dt 
    V1 V2    V3    V4  V5 
1 FOO yyy Unigene126925_All Unigene137063_All 0.238087 
2 FOO yyy Unigene126925_All Unigene24551_All 0.374231 
3 FOO yyy Unigene126925_All Unigene31835_All 0.367897 
4 BAR xxx Unigene126925_All Unigene165366_All 0.247844 
5 BAR xxx Unigene126925_All Unigene111784_All 0.344493 
관련 문제