r - 在 R DataFrame 中一起添加日期和名称
问题描述
我正在尝试在 R 中创建滚动平均值计算,但我只有某个范围内某些日期的数据。但是,与其在滚动平均计算中完全忽略没有数据的日期,我希望在滚动平均计算中将没有数据的日期计为 0。
我创建了一个示例数据框来演示,但在我的实际数据集中,我显然有更多的日期和名称。此外,我正在尝试找出一种方法来将名称添加到每天为 0 时添加的位置。
这是示例 DF 的代码
Date <- Date <- as.Date(c('2021-01-01','2021-01-01','2021-01-01', '2021-01-03','2021-01-03','2021-01-03', '2021-01-04','2021-01-04','2021-01-04', '2021-02-02','2021-02-02','2021-02-02', '2021-02-03','2021-02-03','2021-02-03', '2021-03-01','2021-03-01','2021-03-01'))
Name <- c("John Smith", "Jane Peters", "Jim Clark","John Smith", "Jane Peters", "Jim Clark","John Smith", "Jane Peters", "Jim Clark","John Smith", "Jane Peters", "Jim Clark","John Smith", "Jane Peters", "Jim Clark","John Smith", "Jane Peters", "Jim Clark")
Hours <- c(floor(runif(18, min=0, max = 14)))
data.frame(Date, Name, Hours)
上面的数据框看起来像这样
Date Name Hours
1 2021-01-01 John Smith 11
2 2021-01-01 Jane Peters 9
3 2021-01-01 Jim Clark 6
4 2021-01-03 John Smith 7
5 2021-01-03 Jane Peters 1
6 2021-01-03 Jim Clark 9
7 2021-01-04 John Smith 2
8 2021-01-04 Jane Peters 4
9 2021-01-04 Jim Clark 10
10 2021-02-02 John Smith 2
11 2021-02-02 Jane Peters 1
12 2021-02-02 Jim Clark 3
13 2021-02-03 John Smith 8
14 2021-02-03 Jane Peters 7
15 2021-02-03 Jim Clark 0
16 2021-03-01 John Smith 11
17 2021-03-01 Jane Peters 6
18 2021-03-01 Jim Clark 8
为了说明,我想为没有数据的每个人添加一个“小时”为 0 的每一天。
最终结果在 1 月的前几天看起来像这样,但会一直持续到 3 月初的结束日期。
1 2021-01-01 John Smith 11
2 2021-01-01 Jane Peters 9
3 2021-01-01 Jim Clark 6
4 2021-01-02 John Smith 0
5 2021-01-02 Jane Peters 0
6 2021-01-02 Jim Clark 0
4 2021-01-03 John Smith 7
5 2021-01-03 Jane Peters 1
6 2021-01-03 Jim Clark 9
7 2021-01-04 John Smith 2
8 2021-01-04 Jane Peters 4
9 2021-01-04 Jim Clark 10
10 2021-01-05 John Smith 0
11 2021-01-05 Jane Peters 0
12 2021-01-05 Jim Clark 0
这样,我将能够将没有数据的天数作为 0 添加到我的滚动平均值计算中。
解决方案
听起来您正在寻找该tidyr::complete
功能。看起来像这样
library(tidyr)
complete(mydata, Date=seq(min(Date), max(Date), by="1 day"), Name, fill=list(Hours=0))
推荐阅读
- php - WP - 检索当前页面的子页面
- sql - 在一行中汇总数据,选择 MAX 或 MIN 日期
- flutter - 有没有办法将光标放在多行文本字段中单击鼠标的位置?
- java - 安装了两个 Java 版本的错误 Python 表格
- swift - SwiftUI 中数据项更改时更新列表
- node.js - 带有路由的 NodeJS 不会发布并返回 404 异常
- angular - 您能否在 tsconfig.spec.json 而不是 tsconfig.app.json 中为路径起别名,并让 VS Code 在规范中找到适当的路径?
- bash - 如何检测文本文件的列值是否未分组?
- c++ - 使用 gl_VertexID 计算顶点(在网格内)的 X 和 Z 位置
- java - 我如何使用 int 而不是使用 Integer?