R中具有包含0的数据帧的线性插值

时间:2018-08-01 13:10:39

标签: r interpolation

我正在尝试插值当前以一个小时为间隔10分钟的风速数据。

我正在尝试使用近似函数,但是我一直返回NA值。我怀疑这是因为风速数据记录了0,需要在新数据帧中表示。虽然大约不知道如何处理。有想法该怎么解决这个吗?还是可以提供帮助的R包?

任何见识都会令人惊奇!

#load windspeed data
WJune <- read.csv("WindJune.csv")

WJune的前40行是这样的:

structure(list(datetime = structure(c(1L, 2L, 13L, 18L, 19L, 
20L, 21L, 22L, 23L, 24L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 
12L, 14L, 15L, 16L, 17L, 25L, 26L, 33L, 34L, 35L, 36L, 37L, 38L, 
39L, 40L, 27L, 28L, 29L, 30L, 31L, 32L), .Label = c("1/6/18 0:00", 
"1/6/18 1:00", "1/6/18 10:00", "1/6/18 11:00", "1/6/18 12:00", 
"1/6/18 13:00", "1/6/18 14:00", "1/6/18 15:00", "1/6/18 16:00", 
"1/6/18 17:00", "1/6/18 18:00", "1/6/18 19:00", "1/6/18 2:00", 
"1/6/18 20:00", "1/6/18 21:00", "1/6/18 22:00", "1/6/18 23:00", 
"1/6/18 3:00", "1/6/18 4:00", "1/6/18 5:00", "1/6/18 6:00", "1/6/18 7:00", 
"1/6/18 8:00", "1/6/18 9:00", "2/6/18 0:00", "2/6/18 1:00", "2/6/18 10:00", 
"2/6/18 11:00", "2/6/18 12:00", "2/6/18 13:00", "2/6/18 14:00", 
"2/6/18 15:00", "2/6/18 2:00", "2/6/18 3:00", "2/6/18 4:00", 
"2/6/18 5:00", "2/6/18 6:00", "2/6/18 7:00", "2/6/18 8:00", "2/6/18 9:00"
), class = "factor"), wnd = c(0, 0, 0, 0, 0, 0, 0, 0, 0.13, 5.33, 
4.11, 4.88, 5.08, 4.23, 5.45, 5.33, 4.08, 2.84, 0.61, 0.16, 0.17, 
0, 0, 0.06, 0.02, 0.11, 0.02, 0.01, 0, 0, 0, 0, 0.21, 0.1, 2.9, 
3.56, 2.9, 3.2, 3.96, 4.19), solar = c(0, 0, 0, 0, 0, 0, 0, 0, 
61.9, 163.4, 398.2, 1962.9, 2272.4, 2322.5, 1963.7, 1453.1, 1027.6, 
213.5, 9.3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 120.6, 
320.3, 1987.2, 2281.9, 2328.9, 2141.8, 1733.1), rain = c(0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2, 0, 0, 0)), row.names = c(NA, 
40L), class = "data.frame")

这是我尝试过的:

#Creating an output at 10min intervals
Wmins <- seq(as.POSIXct("2018-06-01 00:00:00"), as.POSIXct("2018-06-30 23:00:00"), by=600)
Wmins

#Interpolate values using approx function
Wout <- approx(WJune$datetime, WJune$wnd, xout=Wmins, method="linear", ties=mean, yleft=0, rule=1)

约转换为正确格式后输出,对于整个数据集都可以看到此常数值。如果有人对为什么会这样有任何见解,将不胜感激     > dput(Wout$y) c(0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49)

0 个答案:

没有答案