我有一个很大的数据集,我想绘制zizi与小时的关系,但仅限于每小时,而变量看起来像这样:
> datasetjc$hour[1:100]
[1] 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23
[40] 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[79] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> datasetjc$zizi[1:100]
[1] 2 27 2 3 45 0 6 0 15 8 3 1 4 0 0 15 1 13 0 15 23 8 21 2 0 9 43 26 31 33 11 0 4 7 26 2 25 14 1
[40] 3 1 6 3 4 3 2 27 2 3 45 0 7 0 15 8 3 1 4 0 4 26 0 15 1 4 0 15 14 12 23 8 3 21 13 2 0 32 43
[79] 31 11 4 0 4 7 26 10 2 25 25 1 1 4 4 23 3 2 27 2 45 0
>
我还有会议记录,日期和日期。每个数据仅相隔5分钟。我该怎么做情节?
THX
答案 0 :(得分:0)
如果我们将您的问题视为“我如何获得每隔五分钟获取的数据的每小时摘要”,那么这是一个经典的拆分应用组合。 Average data by group是对不同技术的一个很好的总结。
对于此特定示例,在vanilla R中使用aggregate
或by
函数。
> df <- data.frame(hour=c(1,1,2,2,3,3,4,4), zizi=1:8)
> aggregate(zizi ~ hour, data=df, mean)
hour zizi
1 1 1.5
2 2 3.5
3 3 5.5
4 4 7.5
如果您希望按日期/小时汇总,则使用+
:
> aggregate(zizi ~ hour + day, data=df, mean)
对于更高级的版本,我建议花一些时间学习dplyr
或data.table
,因为两者都是用于执行这个极其常见任务的更复杂版本的优秀库。
此外,为了便于日后参考,请参阅How to make a great R reproducible example?,了解有关如何更清楚地提出问题的建议。