我有一个很大的数据框,其中有很多值(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循环中选定列的值进行插值。
我的主要问题是找到适合该值的列。有没有简单的解决方案?
答案 0 :(得分:0)
我想您在df1中选择匹配行没有问题吗?然后,您只能使用此行的所有列值填充简单列表或数组。接下来,您可以检查边界(此列表中的第一个和最后一个条目)并搜索最近的条目。
但是我不确定,您想如何插值?!我将您的值解释为y值,却错过了相应的x值。