我有两列:时间和价值。时间是连续的,没有任何空白。然而,值包含在随机点取样的数据,因此在值之间具有随机的数据间隔长度。
下面是一个非常简单的样本数据集:
df <-data.frame(Time=1:10, Value=c("2", NA, NA, NA, "6", NA, NA, "7", NA, "3"))
我想创建第三栏,“估计”。在这一新栏下:
例如,对于时间2
从本质上说,我只是在进行一个从第一个值到下一个值的同等权重的转换。我不关心第一个值之前或最后一个值之前的任何内容(如果在时间1之前或之后有NAs )。
问题:
作为一个新手,当值为空时,我不太确定如何最好地对估计列进行编码。我尝试为具有实际值的行生成行号向量,认为我可以使用它作为索引引用。然后,我尝试执行一个循环,它将接受行A和行B(从行号的向量),计算增量,然后将增量添加到最后一个单元格中。然而,我不知道如何使两个A&B同时增加1(因此它在我的行号向量上做了一个“滚动窗口”)。我还怀疑这不是处理这个problem...but的好方法,我不知道我的选择是什么。
任何指导和指向正确的方向将是非常感谢的!
发布于 2018-03-02 22:40:44
因为您将df$Value中的值视为数字,所以我假设您需要的是数字,而不是字符串。
df <-data.frame(Time=1:10, Value=c(2, NA, NA, NA, 6, NA, NA, 7, NA, 3))你想要的是线性插值,它是由R函数approxfun提供的。
AF = approxfun(df[complete.cases(df),1], df[complete.cases(df),2])
ifelse(is.na(df$Value), AF(df$Time), df$Value)
 [1] 2.000000 3.000000 4.000000 5.000000 6.000000 6.333333 6.666667 7.000000
 [9] 5.000000 3.000000https://stackoverflow.com/questions/49078030
复制相似问题