r - 按组插入缺失的连续周
问题描述
我有一个包含每周数据的数据集。一周从星期一开始,到星期日结束。该数据集也按组分类。
我想检测每个组的开始和结束之间是否缺少任何连续日期。这是一个示例数据集:
Week<- as.Date(c('2015-04-13', '2015-04-20', '2015-05-04', '2015-06-29', '2015-07-27', '2015-08-03'))
Group <- c('A', 'A', 'A','B','B','B','B')
Value<- c(2,3,10,4,11,9,8)
df<-data.frame(Week, Group, Value)
df
Week Group Value
2015-04-13 A 2
2015-04-20 A 3
2015-05-04 A 10
2015-06-29 B 4
2015-07-06 B 11
2015-07-27 B 9
2015-08-03 B 8
2015-07-06
对于 B 组,和之间缺少数据2015-07-27
。2015-04-20
在和之间的 A 组中也存在缺失数据2015-05-04
。我想为该组添加一行并将值设为NA
. 我有很多组,我希望我的预期输出如下:
Week Group Value
2015-04-13 A 2
2015-04-20 A 3
2015-04-27 A NA
2015-05-04 A 10
2015-06-29 B 4
2015-07-06 B 11
2015-07-13 B NA
2015-07-20 B NA
2015-07-27 B 9
2015-08-03 B 8
任何帮助都会很棒,谢谢!
解决方案
您可以complete
从tidyr
包中使用,即
library(tidyverse)
df %>%
group_by(Group) %>%
complete(Week = seq(min(Week), max(Week), by = 'week'))
这使,
# A tibble: 10 x 3 # Groups: Group [2] Group Week Value <fct> <date> <dbl> 1 A 2015-04-13 2 2 A 2015-04-20 3 3 A 2015-04-27 NA 4 A 2015-05-04 10 5 B 2015-06-29 4 6 B 2015-07-06 NA 7 B 2015-07-13 NA 8 B 2015-07-20 NA 9 B 2015-07-27 11 10 B 2015-08-03 9
推荐阅读
- firebase - 为什么我在 Firestore(App 引擎)中有这些奇怪的配额数字?
- elasticsearch - 如何从分数计算中取出(别名字段的长度)
- css - 桌面上的 2 列 移动设备上的 1 列,带有 flexbox
- python - 使用python从json格式中获取指定数据?
- android - Chrome 自定义选项卡链接不会启动应用程序,但移动版 chrome 浏览器会
- java - BeanCreationException:在将 eureka 服务器添加到 Spring Boot 应用程序时抛出名为“simpleMeterRegistry”的 bean 创建错误
- python - 如何仅将推文的文本获取到 json 文件中
- java - 为什么 ThumbnailUtils.createVideoThumbnail() 从图库中获取视频时返回 null
- rust - 了解生命周期:借来的价值还不够活
- php - PHP - 如果没有 FETCH_ASSOC 值,则返回 NULL?