2017-04-04 66 views
0

我有一個DF與連續的日期與一些NA的以下,也值得一提的是[1]將始終有一個日期。For循環用日期填充NA不適用

我想用連續的日期填寫前面的NA。

我: 「2016年1月1日」, 「2016年1月2日」, 「2016年1月3日」,NA,NA

預計DF內的結果將是: 「2016- 01-01「,」2016-01-02「,」2016-01-03「,」2016-01-04「,」2016-01-05「

我試圖使用for循環,但是我在這個很業餘:

Date <-as.Date(c("2016-01-01", "2016-01-02", "2016-01-03", NA, NA)) 

DF <- as.data.frame(Date) 

i <- which.max(is.na(DF$Date)) 
for (i in which.max(is.na(DF$Date)):max(length(DF$Date))){ 
    if(is.na(DF$Date)){ 
    DF$Date[i]= as.Date(max(DF$Date, na.rm=TRUE) + 1) 
    } 
} 

它返回:

警告信息:

1: In if (is.na(DF$Date)) { : 
    the condition has length > 1 and only the first element will be used 
2: In if (is.na(DF$Date)) { : 
    the condition has length > 1 and only the first element will be used 

回答

0

我自己發現,if語句不是一個單值,它列出了整個DF,如果真或假NA。

Date <-as.Date(c("2016-01-01", "2016-01-02", "2016-01-03", NA, NA)) 

DF <- as.data.frame(Date) 

i <- which.max(is.na(DF$Date)) 
for (i in which.max(is.na(DF$Date)):max(length(DF$Date))){ 
    if(which.max(is.na(DF$Date))){ 
    DF$Date[i]= as.Date(max(DF$Date, na.rm=TRUE) + 1) 
    } 
}