R中的线性插值或重采样

琥珀色

我有一个与插值有关的问题。我有2列($ 1是以秒为单位的时间,另一个是海平面)。我尝试过的示例大多来自日期等列,例如1970-11-11,但是我有一些记录,希望将其线性插值为分钟,以秒为单位。最初是每0.3秒采样一次。请问关于哪个软件包最好的建议?在下面,它会生成一个大矩阵,但不会像预期的那样减少值的数量。格式仅为2列。尝试用于进一步分析,而不是每0.1秒而是1分钟采样一次数据。

set.seed(1);
time <- rep(seq(0,180,by=0.1));
sl <-runif(1801,-0.1,4.0);
data1 <-  cbind2(time,sl);

#Output needed...
time(min)   sl(cm)


#Examples tried:

time<-data1$V1
SL<-data1$V2
seq1 <- zoo(order.by=((seq(min(time), max(time), by=30))))

mer1 <- merge(zoo(x=data1[1:2],order.by=time), seq1)
#Linear interpolation
dataL <- na.approx(mer1)
布赖恩·费希尔

这是一个解决方案。这种方法不使用任何线性插值,而是以每分钟为中心取平均值。

library(dplyr) # for group_by and summarize
colnames(data1) <- c("time", "sl")  # makes it easier to call variables by names
data1 <- as.data.frame(data1)  
data1$minute <- round(data1$time/60,0)  #
head(data1)
#  time        sl minute
# 1  0.0 0.9885855      0
# 2  0.1 1.4257080      0
# 3  0.2 2.2486988      0
# 4  0.3 3.6236519      0
# 5  0.4 0.7268959      0
# 6  0.5 3.5833977      0

data_by_minute <- data1 %>%
      group_by(minute) %>%
      summarize(sl_avg = mean(sl))
data_by_minute

# # A tibble: 4 x 2
#   minute sl_avg
#    <dbl>  <dbl>
# 1      0   1.91
# 2      1   1.98
# 3      2   1.87
# 4      3   1.96

如果您只想每分钟获取一次实际读数,而不是计算平均值,则可以采用另一种方法:

data1[data1$time%%60==0,]  # only returns the observations on the minute. throws everything else out
#      time sl
# 1       0 0.9885855
# 601    60 3.2384322
# 1201  120 1.4027590
# 1801  180 0.1525986

或者,如果您正在寻找内插值,则可以使用:

minutes <- time/60  # calculate minutes based on the time variable
mod_leoss <- loess(minutes~sl) # fit a loess model to your data, this is essentially a smoothed version of your sl data based on time
Minute <- c(0,1,2,3)  # minutes for which you want a predicaiton
SL_Preds <- predict(mod_leoss, Minute)  # calculate values from the model

tableA <- cbind(Minute, SL_Preds)
tableA
#      Minute SL_Preds
# [1,]      0 1.665899
# [2,]      1 1.463291
# [3,]      2 1.445809
# [4,]      3 1.498165

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R中NA值的线性插值

来自分类Dev

如何在R中获得线性插值的逆

来自分类Dev

r中列之间的线性插值

来自分类Dev

如何在R中获得线性插值的逆

来自分类Dev

线性插值

来自分类Dev

熊猫数据框:使用线性插值重新采样

来自分类Dev

线性插值中的布尔逻辑

来自分类Dev

Keras中的线性插值

来自分类Dev

PromQL或MetricsQL中的线性插值

来自分类Dev

线性插值优化

来自分类Dev

数据的线性插值

来自分类Dev

R中具有非等距值的2D线性插值

来自分类Dev

如何在r中的多个列之间线性插值?

来自分类Dev

Swift中的简单线性插值

来自分类Dev

在 MATLAB 中编写线性插值函数

来自分类Dev

值之间的线性插值

来自分类Dev

使用dplyr进行线性插值

来自分类Dev

MySQL的PHP线性插值表

来自分类Dev

执行“在线”线性插值

来自分类Dev

如何提高线性插值的性能

来自分类Dev

线性插值无法正常工作

来自分类Dev

如何避免线性插值的“陷阱”?

来自分类Dev

Python 中的线性插值但使用列标题作为索引值

来自分类Dev

如何在缺少值的行中动态地对数据进行线性插值?

来自分类Dev

使用线性插值法将NA值插值到一个变量中

来自分类Dev

如何从图形数据中删除所有可以线性插值的点?

来自分类Dev

C / C ++和CUDA中的双线性插值

来自分类Dev

如何在Java数组中实现线性插值方法?

来自分类Dev

如何从图形数据中删除所有可以线性插值的点?