r - 根据日期聚合变量
问题描述
我有一个包含很多日期点和数据点的大数据集。有关最小示例,请参见此处。
Date x y id update-size
01.01 1 1 1
01.02 2 3 1 2345
01.03 4 2 1
01.01 5 7 2 3654
01.02 2 6 2
01.03 3 2 2 4789
我想汇总每个软件更新之间的数据(x,y)。简而言之:如果有更新,则获取此更新和上次更新(或第一个数据点)之间的所有数据并聚合它们。
提前致谢。
解决方案
和相关包中的和 之类的函数aggregate
以及tapply
工具将为您进行聚合。但是这些都需要一个变量来定义要聚合的组。plyr
dplyr
对于您的简单示例,您可以使用以下代码创建分组变量:
group <- cumsum(!is.na(mydata[['update-size']])
如果您有更新的日期,另一种选择是使用该findInterval
功能。
例子:
> mydata <- data.frame(Date=c('01.01','01.02','01.03','01.01','01.02','01.03'),
+ x=c(1,2,4,5,2,5),
+ y=c(1,3,2,7,6,2),
+ id=c(1,1,1,2,2,2),
+ update.size =c(NA,2345,NA,2345,NA,4789)
+ )
>
> group <- cumsum(!is.na(mydata$update.size))
>
> # above aggregates with values after update
> # this line changes to aggregate with before
> group[ !is.na(mydata$update.size) ] <- group[ !is.na(mydata$update.size) ] -1
>
>
> aggregate(mydata[,2:4], list(group), FUN=sum)
Group.1 x y id
1 0 3 4 2
2 1 9 9 3
3 2 7 8 4
>
推荐阅读
- swift - How to implement Recursive Paginated Network Call using RxSwift
- python - 无法在 vscode 中导入自定义 python 模块
- r - 从一个df绘制点,从另一个绘制误差条
- javascript - 缺少应用程序配置值:“projectId”,即使我正在传递它
- python - 替换 Python 列表中的某些值
- python - PyQt 像 QAbstractItemModel 一样快速更新 QTextEdit
- node.js - SaaS 提供商的订阅和计费(基于 node.js 的解决方案)
- arcore - arcore 显示图像垂直于平面
- php - 无法从虚拟主机服务器将图像上传到 gcp
- dataframe - 如何使用 julia 将数据框的列乘以日志?