迭代地在R中的for循环中填充新列

时间:2018-01-22 20:55:21

标签: r dataframe time-series imputets

我正在使用每月测量多个位置的大型数据集,但每个站点都有不同的测量次数和NA,从而创建了一个破碎的时间序列。为了解决这个问题,我创建了一个for循环,在每个站点循环,使用插值技术填充间隙。从这里,我得到一个插值输出,理想情况下将其添加回原始数据集。例如:

Data.ByteString.Builder

我想要的是采用d $ fit并将其匹配回新的列df $ fit,以便测量数量和每个站点匹配正确。对我的方法有任何建议或彻底改革吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

您实际上并不经常需要循环。您可以使用ave()函数

执行此特定任务
df$fit <- ave(df$Meas, df$Sites, FUN=na.interpolation)

在这种情况下,该函数将na.interpolation函数应用于Meas的每个不同值的每个Sites值,然后按正确顺序放回所有内容。

你可以用于更复杂的事情的另一个策略是split/unsplit。像

这样的东西
ss <- split(df$Meas, df$Sites)
df$fit <- unsplit(lapply(ss, na.interpolation), df$Sites)