【发布时间】:2017-03-31 01:24:26
【问题描述】:
请注意:这是对“数据”来自何处的超简化解释,但数据来自何处与编码问题无关。
我有一个通过每天在管中收集水创建的数据集。 我不能每天都去测量管子(但管子一直在灌水),所以水值记录有差距。 这个虚拟数据集显示了第 5 天和第 10 天发生这种情况的位置,因为这是一个虚拟数据集,我假设每天有 500 毫升水进入试管(真实数据集要混乱得多!)
虚拟数据
day<-c(1,2,3,4,5,6,7,8,9,10,11,12)
value<-c(500,500,500,500,NA,1000,NA,NA,NA,2000,500,500)
df<-data.frame(day,value)
数据说明:我每天1:4收集所以每天的数值是500ml,错过第5天所以数值是NA,第6天收集所以数值是1000ml(第5天的水和第 6 天合并),错过了 7、8、9,因此值等于 NA,在第 10 天收集,4 天的值为 2000ml)然后每天收集最后两天)
我想通过获取下一个“实际”测量值并将该值除以 NA 和该值的日期来填补 NA 空白。是的,我假设如果我没有进行测量,则存在一个恒定的过程,我可以在几天之间平均分配最后一次测量。
这是输出数据的样子
day<-c(1,2,3,4,5,6,7,8,9,10,11,12)
corrected.value<-c(500,500,500,500,500,500,500,500,500,500,500,500)
corrected.df<-data.frame(day,corrected.value)
这只是一个虚拟数据集,否则最简单的方法就是将 NA 替换为 500 为 'value[is.na(value)] <- 500',但在实际数据集中,值可以是 457.6、779、376 等。
也试图做一个循环,但一直卡住......
关于如何做到这一点的任何想法?
非常感谢您的帮助
【问题讨论】:
标签: r dataframe data-cleaning