2015-04-29 2 views
1

У меня есть следующие data.frameR кадра данных временной метка манипуляция

> head(k) 
       begin    end   type total_replies rpm 
1 03/22/15 00:00:00 03/22/15 00:05:00 178.19     0.50 0.10 
2    <NA>    <NA> 178.19.6    0.50 0.10 
3 03/22/15 00:05:00 03/22/15 00:10:00 178.1963    0.50 0.10 
4    <NA>    <NA> 178.19.75    0.50 0.10 
5    <NA>    <NA> 12.221.253    0.75 0.15 
6 03/22/15 00:10:00 03/22/15 00:15:00 101.254    1.50 0.30 

Значение NA соответствует временной метке над ними, соответственно, то есть метки времени в строке-должно быть таким же, как строки 1 и так далее

Как заполнить значения NA в соответствии с меткой времени над ними?

+2

Отъезд 'na.locf' функция от' zoo' пакета. –

ответ

0

В принципе, вы должны сделать следующее:

replace <- function(dataFrame, forField){ 
    for (i in c(1:nrow(dataFrame))){ 
     if (is.na(dataFrame[i,forField])){ 
      dataFrame[i,forField] <- dataFrame[i-1,forField] 
     } 
    } 
    return (dataFrame) 
} 

и вызвать функцию

replace(yourDataFrame, "begin") 

, чтобы заменить все начать поля. То же самое касается конца.

выход Обновление:

enter image description here

+1

OP не * есть * сделать все. Он * может * делать то, что вы предложили. Существует много возможных решений, и ваш * может потенциально быть одним из них. –

+0

Проверьте обновление –

+0

Ничего, я нашел проблему. – akrun

1

Я думаю, что что-то, как это должно работать

for (i in 1:nrow(k)) {if is.na(k$begin[i]) { 
k$begin[i] = k$begin[i-1]}} 
Смежные вопросы