2014-02-26 4 views
0

나는 많은 NA 값을 가진 R에 큰 테이블을 가지고 있습니다.R - 제거 NA 값

첫 번째 라인 :

"tm1" "score1" "score2" "score3" "score4" "score5" "score6" "score7" "score8" "score9" "score10" "score11" "score12" "score13" "score14" "score15" "score16" "score17" "score18" "score19" "score20" "score21" "score22" "score23" "score24" "score25" "score26" "score27" "score28" "score29" "score30" "score31" "score32" "score33" "score34" "score35" "score36" "score37" "score38" "score39" "score40" "score41" "score42" "score43" "score44" "score45" "score46" "score47" "score48" "score49" "score50" "score51" "score52" "score53" "score54" "score55" "score56" "score57" "score58" "score59" "score60" "score61" "score62" "score63" "score64" "score65" "score66" "score67" "score68" "score69" "score70" "score71" "score72" "score73" "score74" "score75" "score76" "score77" "score78" "score79" "score80" "score81" "score82" "score83" "score84" "score85" "score86" "score87" "score88" "score89" "score90" "score91" "score92" "score93" "score94" "score95" "score96" "score97" "score98" "score99" "score100" 
"1" 7289 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 35177.5 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 
"2" 7290 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 37149 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 
"3" 7296 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 33172.3 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 
"4" 7297 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 45095.7 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 
"5" 7298 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 44116.1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 
"6" 7300 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 37162.1 NA 36188.6 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 
"7" 7302 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 35188 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 
"8" 7303 NA NA NA NA NA NA NA NA 37146.9 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 
"9" 7304 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 41134.4 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 32172.8 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 35154.6 NA NA NA NA NA NA 
"10" 7306 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 38147 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 36155.7 NA NA 46104.1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 
"11" 7308 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 33167.1 NA 27211.4 NA NA NA NA NA NA NA NA NA NA NA NA NA 
"12" 7310 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 46097.1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 

나는 이전에 알려진 값으로 각 scoreX NA 값을 대체합니다. 나는 동물원 패키지에서 LOCF를 사용하려면 원 :

newdata$score1 <- zoo::na.locf(newdata$score1) 
newdata$score2 <- zoo::na.locf(newdata$score2) 
newdata$score3 <- zoo::na.locf(newdata$score3) 
newdata$score4 <- zoo::na.locf(newdata$score4) 
newdata$score5 <- zoo::na.locf(newdata$score5) 
newdata$score6 <- zoo::na.locf(newdata$score6) 
newdata$score7 <- zoo::na.locf(newdata$score7) 
newdata$score8 <- zoo::na.locf(newdata$score8) 
newdata$score9 <- zoo::na.locf(newdata$score9) 
newdata$score10 <- zoo::na.locf(newdata$score10 ) 
newdata$score11 <- zoo::na.locf(newdata$score11 ) 
newdata$score12 <- zoo::na.locf(newdata$score12 ) 
newdata$score13 <- zoo::na.locf(newdata$score13 ) 
newdata$score14 <- zoo::na.locf(newdata$score14 ) 
newdata$score15 <- zoo::na.locf(newdata$score15 ) 
newdata$score16 <- zoo::na.locf(newdata$score16 ) 
newdata$score17 <- zoo::na.locf(newdata$score17 ) 
newdata$score18 <- zoo::na.locf(newdata$score18 ) 
newdata$score19 <- zoo::na.locf(newdata$score19 ) 
newdata$score20 <- zoo::na.locf(newdata$score20 ) 
newdata$score21 <- zoo::na.locf(newdata$score21 ) 
newdata$score22 <- zoo::na.locf(newdata$score22 ) 
newdata$score23 <- zoo::na.locf(newdata$score23 ) 
newdata$score24 <- zoo::na.locf(newdata$score24 ) 
newdata$score25 <- zoo::na.locf(newdata$score25 ) 
newdata$score26 <- zoo::na.locf(newdata$score26 ) 
newdata$score27 <- zoo::na.locf(newdata$score27 ) 
newdata$score28 <- zoo::na.locf(newdata$score28 ) 
newdata$score29 <- zoo::na.locf(newdata$score29 ) 
newdata$score30 <- zoo::na.locf(newdata$score30 ) 
newdata$score31 <- zoo::na.locf(newdata$score31 ) 
newdata$score32 <- zoo::na.locf(newdata$score32 ) 
newdata$score33 <- zoo::na.locf(newdata$score33 ) 
newdata$score34 <- zoo::na.locf(newdata$score34 ) 
newdata$score35 <- zoo::na.locf(newdata$score35 ) 
newdata$score36 <- zoo::na.locf(newdata$score36 ) 
newdata$score37 <- zoo::na.locf(newdata$score37 ) 
newdata$score38 <- zoo::na.locf(newdata$score38 ) 
newdata$score39 <- zoo::na.locf(newdata$score39 ) 
newdata$score40 <- zoo::na.locf(newdata$score40 ) 
newdata$score41 <- zoo::na.locf(newdata$score41 ) 
newdata$score42 <- zoo::na.locf(newdata$score42 ) 
newdata$score43 <- zoo::na.locf(newdata$score43 ) 
newdata$score44 <- zoo::na.locf(newdata$score44 ) 
newdata$score45 <- zoo::na.locf(newdata$score45 ) 
newdata$score46 <- zoo::na.locf(newdata$score46 ) 
newdata$score47 <- zoo::na.locf(newdata$score47 ) 
newdata$score48 <- zoo::na.locf(newdata$score48 ) 
newdata$score49 <- zoo::na.locf(newdata$score49 ) 
newdata$score50 <- zoo::na.locf(newdata$score50 ) 
newdata$score51 <- zoo::na.locf(newdata$score51 ) 
newdata$score52 <- zoo::na.locf(newdata$score52 ) 
newdata$score53 <- zoo::na.locf(newdata$score53 ) 
newdata$score54 <- zoo::na.locf(newdata$score54 ) 
newdata$score55 <- zoo::na.locf(newdata$score55 ) 
newdata$score56 <- zoo::na.locf(newdata$score56 ) 
newdata$score57 <- zoo::na.locf(newdata$score57 ) 
newdata$score58 <- zoo::na.locf(newdata$score58 ) 
newdata$score59 <- zoo::na.locf(newdata$score59 ) 
newdata$score60 <- zoo::na.locf(newdata$score60 ) 
newdata$score61 <- zoo::na.locf(newdata$score61 ) 
newdata$score62 <- zoo::na.locf(newdata$score62 ) 
newdata$score63 <- zoo::na.locf(newdata$score63 ) 
newdata$score64 <- zoo::na.locf(newdata$score64 ) 
newdata$score65 <- zoo::na.locf(newdata$score65 ) 
newdata$score66 <- zoo::na.locf(newdata$score66 ) 
newdata$score67 <- zoo::na.locf(newdata$score67 ) 
newdata$score68 <- zoo::na.locf(newdata$score68 ) 
newdata$score69 <- zoo::na.locf(newdata$score69 ) 
newdata$score70 <- zoo::na.locf(newdata$score70 ) 
newdata$score71 <- zoo::na.locf(newdata$score71 ) 
newdata$score72 <- zoo::na.locf(newdata$score72 ) 
newdata$score73 <- zoo::na.locf(newdata$score73 ) 
newdata$score74 <- zoo::na.locf(newdata$score74 ) 
newdata$score75 <- zoo::na.locf(newdata$score75 ) 
newdata$score76 <- zoo::na.locf(newdata$score76 ) 
newdata$score77 <- zoo::na.locf(newdata$score77 ) 
newdata$score78 <- zoo::na.locf(newdata$score78 ) 
newdata$score79 <- zoo::na.locf(newdata$score79 ) 
newdata$score80 <- zoo::na.locf(newdata$score80 ) 
newdata$score81 <- zoo::na.locf(newdata$score81 ) 
newdata$score82 <- zoo::na.locf(newdata$score82 ) 
newdata$score83 <- zoo::na.locf(newdata$score83 ) 
newdata$score84 <- zoo::na.locf(newdata$score84 ) 
newdata$score85 <- zoo::na.locf(newdata$score85 ) 
newdata$score86 <- zoo::na.locf(newdata$score86 ) 
newdata$score87 <- zoo::na.locf(newdata$score87 ) 
newdata$score88 <- zoo::na.locf(newdata$score88 ) 
newdata$score89 <- zoo::na.locf(newdata$score89 ) 
newdata$score90 <- zoo::na.locf(newdata$score90 ) 
newdata$score91 <- zoo::na.locf(newdata$score91 ) 
newdata$score92 <- zoo::na.locf(newdata$score92 ) 
newdata$score93 <- zoo::na.locf(newdata$score93 ) 
newdata$score94 <- zoo::na.locf(newdata$score94 ) 
newdata$score95 <- zoo::na.locf(newdata$score95 ) 
newdata$score96 <- zoo::na.locf(newdata$score96 ) 
newdata$score97 <- zoo::na.locf(newdata$score97 ) 
newdata$score98 <- zoo::na.locf(newdata$score98 ) 
newdata$score99 <- zoo::na.locf(newdata$score99 ) 
newdata$score100  <- zoo::na.locf(newdata$score100 ) 

나는 아마도 이전 값이없는 최초의 값 사실, 오류가 발생합니다!

오류, 값 = C를 (32189.8, 32189.8, $<-.data.frame (*tmp*, "score1"에서 : 교체, 데이터가 459,772

을 459,744 행이있다 나는 내 실험을 다시 실행하고 좋은 TM1을 추가 할 수도 있겠죠 = 0 각 실행에 대한 가치,하지만이 방법을 피할 수 있는지 궁금 해서요. 이전 값이없는 행에 대한 NA 값을 남겨주세요.

답변

1

경우 기본값을 설정해야합니다 첫 번째 NA 앞에 값이 없습니다. 다음 예제에서는 0으로 설정합니다.

# create new data.frame with score0 = 0 as first column 
newdata <- data.frame(newdata$tm1, score0=rep(0,nrow(newdata)), newdata[,-1]) 

# apply function na.locf to every row 
a <- t(apply(newdata[,-c(1)], 1, na.locf)) 

# append to original data.frame (this will keep the column score0) 
newdata[,2:ncol(newdata)] <- a 
+0

0 값을 첫 번째 발생 값으로 설정하면 어떻게됩니까? 어떻게 작동할까요? – dorien