2016-05-11 80 views
1

我有一個1843-2016每日的降雨量數據的時間序列,但有些記錄中的日子完全沒有了。我希望在缺少數據的日子填寫日期,並在降雨欄中填寫缺少的N/A代碼。這可能嗎?填入日期

我的數據的形式如下:

Year Month Day Rainfall (mm) 
1843 1 1  4.3 
1843 1 2  0.0 
1843 1 3  1.1 
1843 1 5  0.0 

回答

3

我們可以dplyr/tidyr嘗試。創建從'1843'的第一天到'2016'的最後一天的'日期'序列,將其轉換爲data.frame,separate它爲'年','月'和'日',然後left_join與原始數據集('df1'),以便缺失的組合在「降雨量」列中有NA。

Dates <- seq(as.Date("1843-01-01"), as.Date("2016-12-31"), by = "1 day") 
library(tidyr) 
library(dplyr) 
data_frame(Dates) %>% 
    separate(., Dates, into = c("Year", "Month", "Day"), convert=TRUE) %>% 
    left_join(., df1, by = c("Year", "Month", "Day")) 

使用可重複的小例子

df1 <- data.frame(Year = 1843, Month = 1, Day = c(1, 5, 7, 10), Rainfall= c(4.3, 0, 1.1, 0)) 
Dates <- seq(as.Date("1843-01-01"), as.Date("1843-01-10"), by = "1 day") 
data_frame(Dates) %>% 
    separate(., Dates, into = c("Year", "Month", "Day"), convert=TRUE) %>% 
    left_join(., df1, by = c("Year", "Month", "Day")) 
# Year Month Day Rainfall 
# <dbl> <dbl> <dbl> <dbl> 
#1 1843  1  1  4.3 
#2 1843  1  2  NA 
#3 1843  1  3  NA 
#4 1843  1  4  NA 
#5 1843  1  5  0.0 
#6 1843  1  6  NA 
#7 1843  1  7  1.1 
#8 1843  1  8  NA 
#9 1843  1  9  NA 
#10 1843  1 10  0.0 
+0

這將返回: 「錯誤:不能加入對列 '年' X '年':索引越界」 –

+0

@ DJ-AFC如果列名是相同的,並具有相同的類,它應該工作 – akrun

+1

我不得不重新命名原始數據框中的列標題,但是當我這樣做,它的工作完美。非常感謝@akrun –