我从3个不同的流中的10个不同站点获得了一些日常温度数据。有些网站缺少需要填写NA的日期 如何将以下代码应用于每个站点A-J,以便每个站点不再缺少日期。有些网站缺少相同的日期。
sorted_data = SiteA[order(SiteA$Date),]
data_length = length(sorted_data$Date)
time_min = sorted_data$Date[1]
time_max = sorted_data$Date[data_length]
all_dates = seq(time_min, time_max, by="day")
all_dates_frame = data.frame(list(Date=all_dates))
SiteA= merge(all_dates_frame, sorted_data, all=T)
答案 0 :(得分:1)
您可以将该代码包装到一个函数中并应用它,但代码还存在其他问题,而且它也不是统计上有效的插补方法(除非您知道我不了解这个特定情况的内容)。
这是我的建议:
require(data.table) # to avoid trouble using rbind on dates and for speed
require(RRF)
# Simulate the data in question
siteA <- data.table(Stream = c(1,1,1), Date = c(Sys.Date(), Sys.Date()+1, NA), site = 1)
siteB <- data.table(Stream = c(2,2,2), Date = c(Sys.Date()-1, Sys.Date()+1, NA), site = 2)
siteC <- data.table(Stream = c(3,3,3), Date = c(Sys.Date()-2, NA, Sys.Date()), site = 3)
siteD <- data.table(Stream = c(1,1,1), Date = c(NA, Sys.Date()+1, NA), site = 4)
siteE <- data.table(Stream = c(2,2,2), Date = c(Sys.Date(), NA, NA), site = 5)
siteF <- data.table(Stream = c(3,3,3), Date = c(Sys.Date(), Sys.Date()+1, NA), site = 6)
siteG <- data.table(Stream = c(1,1,1), Date = c(Sys.Date(), Sys.Date()-1, NA), site = 7)
siteH <- data.table(Stream = c(1,1,1), Date = c(Sys.Date(), Sys.Date()-3, NA), site = 8)
siteI <- data.table(Stream = c(1,1,1), Date = c(Sys.Date(), Sys.Date()+1, NA), site = 9)
siteJ <- data.table(Stream = c(1,1,1), Date = c(Sys.Date(), Sys.Date()+1, NA), site = 10)
# Combine data and impute date
DT <- rbind(siteA,siteB,siteC,siteD,siteE,siteF,siteG,siteH,siteI,siteJ)
DT <- DT[, Date:=as.factor(as.character(Date))]
DT <- na.roughfix(DT)
DT
Stream Date site
1: 1 2016-06-14 1
2: 1 2016-06-15 1
3: 1 2016-06-14 1
4: 2 2016-06-13 2
5: 2 2016-06-15 2
6: 2 2016-06-14 2
7: 3 2016-06-12 3
8: 3 2016-06-14 3
9: 3 2016-06-14 3
10: 1 2016-06-14 4
11: 1 2016-06-15 4
12: 1 2016-06-14 4
13: 2 2016-06-14 5
14: 2 2016-06-14 5
15: 2 2016-06-14 5
16: 3 2016-06-14 6
17: 3 2016-06-15 6
18: 3 2016-06-14 6
19: 1 2016-06-14 7
20: 1 2016-06-13 7
21: 1 2016-06-14 7
22: 1 2016-06-14 8
23: 1 2016-06-11 8
24: 1 2016-06-14 8
25: 1 2016-06-14 9
26: 1 2016-06-15 9
27: 1 2016-06-14 9
28: 1 2016-06-14 10
29: 1 2016-06-15 10
30: 1 2016-06-14 10
Stream Date site
na.roughfix
,顾名思义是一种粗略但广泛使用且统计上可接受的插补方法。如果你想要更好的东西(花费更长的时间来设置和运行),请尝试mice
甚至更好amelia
。