我是 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
是要走的路吗?或许?但我对如何做我想做的事情感到困惑。