将值分类到向量之间,然后插值R

时间:2019-05-09 08:57:43

标签: interpolation intervals

我有一个很大的数据框,其中有很多值(df1) 另外,我有一个类似时间序列的secound数据帧(df2),但已转换为df。

我现在想对df2进行每次测量,并将其分类为df1的两列。

df1基本上是这样的:

     km X0.5MNQ    MNQ X0.5MQ      a X0.75MQ      b     MQ      c   X2MQ   X3MQ      d
1  1  106.64 107.18 107.53 107.79  108.02 108.23 108.44 109.16 109.79 110.87 111.61
2  2  106.64 107.18 107.53 107.79  108.02 108.23 108.44 109.16 109.79 110.87 111.61
3  3  106.63 107.18 107.53 107.78  108.01 108.23 108.43 109.15 109.78 110.86 111.60
4  4  106.63 107.17 107.52 107.77  108.00 108.21 108.41 109.13 109.76 110.83 111.57
5  5  106.63 107.17 107.51 107.76  107.99 108.20 108.41 109.12 109.74 110.81 111.55

df2看起来像这样:

          Date Pegelstand      MKZ Pegel Pegelkm  MKZkm
1   1960-01-01    109.696 50491952 Pirna       2      4
2   1960-01-02    109.596 50491952 Pirna       2      4 
3   1960-01-03    109.616 50491952 Pirna       2      4
4   1960-01-04    109.596 50491952 Pirna       2      4
5   1960-01-05    109.606 50491952 Pirna       2      4
6   1960-01-06    109.756 50491952 Pirna       2      4
7   1960-01-07    109.846 50491952 Pirna       2      4

我从一些代码开始,但是我缺少一些东西,所以我不能继续下去。

workspace`<-...
files<-list.files(workspace,"csv", recursive = T)
data<-list()
  for (i in 1:length(files)){
    data[[i]]<-read.csv(paste(workspace,files[i],sep="/"), header = T, sep = ",")
    data[[i]]$Date<-as.Date(data[[i]]$Date)
    names(data[[i]])<-c("Date", "Pegelstand", "MKZ", "Pegel", "Pegelkm", "MKZkm")
  }
  #Zuordnung der Elbekilometer 
  for (i in 1:length(files)){
    ganglinie<-length(data[[i]]$Pegelstand)
    pegelkm<-mean(data[[i]]$Pegelkm)
    zeile_pegelkm<-which(fix$km==pegelkm) #Zeile in Fixierung mit Pegelwerten
    for (j in 1:ganglinie) {

     }
  }

在第一个循环中,我定义了一个列表(data [[i]]),其中包含我的所有df2时间序列,但已转换为数据帧格式。进一步,我搜索适合我的df2 $ Pegelkm的行ind df1(df1 $ km = df2 $ pegelkm)。

那是我要在其中找到两列的参考行,通过df2进行测量之后就可以在其中找到测量值。这将在步骤2中发生。因此,我想我需要一个secound loop。

当我知道测量值适合的位置时,我必须根据行df1 $ km = df2 $ MKZkm的第2循环中选定列的值进行插值。

我的主要问题是找到适合该值的列。有没有简单的解决方案?

1 个答案:

答案 0 :(得分:0)

我想您在df1中选择匹配行没有问题吗?然后,您只能使用此行的所有列值填充简单列表或数组。接下来,您可以检查边界(此列表中的第一个和最后一个条目)并搜索最近的条目。

但是我不确定,您想如何插值?!我将您的值解释为y值,却错过了相应的x值。