按包括时间在内的多个变量聚合

问题描述 投票:0回答:0

我是 R 编程的新手(就此而言,完全是编程......)我正在尝试为我的班级项目做一些数据分析。我有一些看起来像这样的数据:

身份证 时间 心率
1341231 2016-04-12 07:23:30 95
1341231 2016-04-12 07:23:40 101
1341231 2016-04-12 07:23:50 92
1341231 2016-04-12 07:24:00 87
2342383 2016-04-12 07:23:30 60

这是来自可穿戴健身追踪器的数据,以 5 或 10 秒为间隔。这是一个相当大的数据集,有超过 200 万个条目。我想做的是:对于每个 Id(也就是每个用户),按小时汇总秒数据,返回每小时的平均心率。所以我想要看起来像这样的输出:

身份证 时间 心率
1341231 2016-04-12 07:00 95
1341231 2016-04-12 08:00 82
1341231 2016-04-12 09:00 80
1341231 2016-04-12 10:00 100
2342383 2016-04-12 07:00 65

日期最初是字符串,所以我用

lubridate.
解析它们但是在那之后,事情开始出错了。

所以,我转向我最好的技术:复制粘贴半理解的代码。

首先,我试过

test_df <- aggregate(Heartrate ~ format(as.POSIXct(sechr$Time), "%m-%d-%y %H"), data=sechr, mean)

但这不好。正如我很快意识到的那样,这完全放弃了 Id,以一种或多或少无用的方式总结了我的数据。

所以,接下来我尝试了

aggregate
的各种公式,它似乎没有为另一个变量接受另一个参数,然后用
summarize
group_by
进行了实验,如下所示:

testdf3 <- sechr %>% group_by(c(Time ~ format(as.POSIXct(sechr$Time))), "%m-%d-%y %H", Id) %>% summarise(avg_hr=sum(Heartrate))

不用说了,基本上靠猜根本就不行。我产生了很多错误和几个愚蠢的、无用的数据帧。

基本上,我需要的是一种“对于每个不同的 Id,给我每小时的平均值”的方法。我认为使用

xts
是要走的路吗?或许?但我对如何做我想做的事情感到困惑。

r dplyr xts
© www.soinside.com 2019 - 2024. All rights reserved.