【发布时间】:2018-03-05 14:16:45
【问题描述】:
我有一个非常简单的问题,它似乎没有一个非常简单的解决方案。假设我有以下数据:
> test <- data.frame(Day = c(1:10), Counts = c(0, 0, 6, 0, 0, 5, 1, 0, 3, 4))
> test
Day Counts
1 1 0
2 2 0
3 3 6
4 4 0
5 5 0
6 6 5
7 7 1
8 8 0
9 9 3
10 10 4
根据对数据来源的了解,我可以安全地假设非零 计数 不会在随后的几天发生。而是在最初的Day 中遗漏了一些计数。例如,第 6 天和第 7 天的 Counts 将属于 Day 6(总共有 6 个 Counts) .
我想找到一个可以产生这种期望输出的常规解决方案:
Day Counts
1 1 0
2 2 0
3 3 6
4 4 0
5 5 0
6 6 6
7 8 0
8 9 7
注意Day第 7 天和第 10 天是如何被删除的,并且它们的 Counts 已添加到Day第 6 天和第 9 天的计数中。这确实是我后续分析数据所需的格式,它会受到“错误”计数的影响。
我已经使用zoo 和RcppRoll 包中的函数以及使用dplyrs lag() 的所谓tidy 解决方案尝试了多种“移动/滚动窗口”方法和lead() 函数,但没有Heureka!迄今。由于我的数据集包含数十万行(以及更多列),因此非常不希望手动更正。
感谢任何帮助!即使它只是指向一个现有的问题......
p.s.:显示 tidyverse 解决方案的奖励积分,因为我打算在管道工作流程中使用它。
编辑:感谢您的解决方案,它们都可以完美运行!让我开心:)
【问题讨论】: