R:根据columnvalue在数据帧中添加行

时间:2015-06-23 16:58:32

标签: r

我有一个数据帧,包括以100Hz采样的运动信号。 以简化的方式看起来像这样:

df<-data.frame(c(0.01, 0.02, 0.05, 0.06), c(0, 0, 2, 0), c(2,3,10,15))
names(df)<-c("counter", "lostSamples", "value")
df
#   counter lostSamples value
# 1    0.01           0     2
# 2    0.02           0     3
# 3    0.05           2    10
# 4    0.06           0    15

计数器“是每个样本; “lostSamples”是我的设备无法记录/存储样本的时候; “value”是相对于参考的1维实际信号

我想在丢失样本时添加行。 在这个例子中,我必须填补计数器0.3和0.4的间隙(为数据帧添加行)。 我想用NAs(更容易)填补空白,或者根据间隙前后的值通过线性函数进行插值。

我尝试使用for循环并使用apply但是没有成功。

2 个答案:

答案 0 :(得分:2)

这可能是另一种方式

df2 = data.frame(counter = seq(0.01, 0.06, 0.01))
out = merge(df, df2, all = T)

#  counter lostSamples value
#1    0.01           0     2
#2    0.02           0     3
#3    0.03          NA    NA
#4    0.04          NA    NA
#5    0.05           2    10
#6    0.06           0    15

答案 1 :(得分:1)

如果您有计数器的预期值列表,可以使用approx函数进行线性插值:

expected <- seq(0.01, 0.06, 0.01)
data.frame(counter=expected,
           value=approx(df$counter, df$value, expected)$y)
#   counter     value
# 1    0.01  2.000000
# 2    0.02  3.000000
# 3    0.03  5.333333
# 4    0.04  7.666667
# 5    0.05 10.000000
# 6    0.06 15.000000