我正在使用每月测量多个位置的大型数据集,但每个站点都有不同的测量次数和NA,从而创建了一个破碎的时间序列。为了解决这个问题,我创建了一个for循环,在每个站点循环,使用插值技术填充间隙。从这里,我得到一个插值输出,理想情况下将其添加回原始数据集。例如:
Data.ByteString.Builder
我想要的是采用d $ fit并将其匹配回新的列df $ fit,以便测量数量和每个站点匹配正确。对我的方法有任何建议或彻底改革吗?提前谢谢!
答案 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)