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
我有一個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
我們可以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
這將返回: 「錯誤:不能加入對列 '年' X '年':索引越界」 –
@ DJ-AFC如果列名是相同的,並具有相同的類,它應該工作 – akrun
我不得不重新命名原始數據框中的列標題,但是當我這樣做,它的工作完美。非常感謝@akrun –