r - 使用 groupby 列创建缺少天数的新行
问题描述
其他人问如何使用complete
函数来填补空白,但我想按其他几列分组,然后填补缺失的日子。
我有一个包含许多列的数据框,为简单起见,我只显示 4 列这样的列
data <- data.frame(groups = c('A', 'A','A','A','A','A','A','A','A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'),
date = c(6535, 6535, 6535, 6535, 6535, 6535, 6535, 6535, 6535, 6535, 6535, 6535, 6535, 6535, 6535, 6535, 6535, 6535, 6535),
days = c(1, 2, 4, 7, 11, 12, 13, 14, 15, 1, 3, 4, 5, 6, 9, 10, 12, 13, 14),
price = c(64, 82, 31, 77, 21, 39, 79, 67, 45, 66, 24, 60, 64, 56, 41, 29, 60, 57, 68))
我想为缺失的日子创建新行,以便得到一张这样的表
groups date days price
1 A 6535 1 64
2 A 6535 2 82
3 A 6535 3 NA
4 A 6535 4 31
5 A 6535 5 NA
6 A 6535 6 NA
7 A 6535 7 77
8 A 6535 8 NA
9 A 6535 9 NA
10 A 6535 10 NA
11 A 6535 11 21
12 A 6535 12 39
13 A 6535 13 79
14 A 6535 14 67
15 A 6535 15 45
16 B 6535 1 66
17 B 6535 2 NA
18 B 6535 3 24
19 B 6535 4 60
20 B 6535 5 64
21 B 6535 6 56
22 B 6535 7 NA
23 B 6535 8 NA
24 B 6535 9 41
25 B 6535 10 29
26 B 6535 11 NA
27 B 6535 12 60
28 B 6535 13 57
29 B 6535 14 68
30 B 6535 15 NA
因此,我想按groups
和分组date
,然后扫描days
列(范围为 1 到 15)并添加一行缺失天数,该行基于groups
和复制行,但该列的值为。date
group by
price
NA
解决方案
签出tidyr
函数调用complete
library(dplyr)
library(tidyr)
data %>% group_by(date,groups) %>% complete(days = 1:15)
# # A tibble: 30 x 4
# # Groups: date, groups [2]
# date groups days price
# <dbl> <fct> <dbl> <dbl>
# 1 6535 A 1.00 64.0
# 2 6535 A 2.00 82.0
# 3 6535 A 3.00 NA
# 4 6535 A 4.00 31.0
# 5 6535 A 5.00 NA
# 6 6535 A 6.00 NA
# 7 6535 A 7.00 77.0
# 8 6535 A 8.00 NA
# 9 6535 A 9.00 NA
# 10 6535 A 10.0 NA
# # ... with 20 more rows
推荐阅读
- excel - VBA 循环:自动填写 Web 表单
- python - ImportError:无法从“flask_sqlalchemy”(未知位置)导入名称“SQLAlchemy”
- vb.net - 如何在 VB.NET 中绘制进度条的块数?
- python - 根据具有重复值的列表重新排序 pandas 数据框
- jira - 搜索 Jira 以查找在票证某处评论了我的名字的公开票证
- python - SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13: malformed \N character escape
- c# - Unity UWP FolderPicker 抛出无效窗口句柄异常
- css - ul 元素的弹性列方向问题
- android - 为什么在 React Native 中创建的 android 应用程序无法打开?
- python - 如何更新json文件中键的值而不在python中加载完整的json?