r - ggplot:如何显示显着偏离平均值的时间序列
问题描述
我正在制作一个系统,我们将在其中绘制各个主题随时间的进展。每周测量一次。我可以很容易地绘制出非常细且半透明的各个进度线以及一条相当粗的重叠平均线:
我通过制作一个数据框来获得平均线,其中观察结果汇总如下mean()
:
df.avg.feeling <- df.lines.feeling %>%
dplyr::group_by(date) %>%
summarise(feeling=mean(feeling))
这适用于大约 10 个,也许是 15 个主题。我们可以看到这条线666666
明显不同。但是,如果我有 50 个科目,则很难辨别各个行。该图的目的是捕捉那些明显偏离平均线的数据系列。我的问题是 - 如何制作一个数据框,让我只选择最偏离平均值的 10 个数据系列/行?我只能绘制那些线。我有点看到需要创建一些偏离平均线的分数,以便我可以选择前n 个观察系列。这是正确的,以及如何对时间序列线/数据执行此操作?
数据组织如下:
date id feeling
1 2019-08-08 111111 68
2 2019-08-15 111111 45
3 2019-08-22 111111 60
4 2019-08-29 111111 70
5 2019-09-05 111111 55
...
102 2019-11-21 666666 70
103 2019-11-28 666666 68
当前数据框dput()
为:
structure(list(date = structure(c(18116, 18123, 18130, 18137,
18144, 18151, 18158, 18116, 18123, 18130, 18137, 18144, 18151,
18158, 18116, 18123, 18130, 18137, 18144, 18151, 18158, 18116,
18123, 18130, 18137, 18144, 18151, 18158, 18116, 18123, 18130,
18137, 18144, 18151, 18158, 18116, 18123, 18130, 18137, 18144,
18151, 18158, 18116, 18123, 18130, 18137, 18144, 18151, 18158,
18165, 18172, 18179, 18186, 18193, 18200, 18207, 18214, 18221,
18228, 18235, 18165, 18172, 18179, 18186, 18193, 18200, 18207,
18214, 18221, 18228, 18235, 18165, 18172, 18179, 18186, 18193,
18200, 18207, 18214, 18221, 18228, 18235, 18165, 18172, 18179,
18186, 18193, 18200, 18207, 18214, 18221, 18228, 18235, 18165,
18172, 18179, 18186, 18193, 18200, 18207, 18214, 18221, 18228,
18235, 18165, 18172, 18179, 18186, 18193, 18200, 18207, 18214,
18221, 18228, 18235, 18165, 18172, 18179, 18186, 18193, 18200,
18207, 18214, 18221, 18228, 18235, 18242, 18242, 18242, 18242,
18242, 18242, 18243, 18243, 18243, 18243, 18243, 18243), class = "Date"),
id = c(111111L, 111111L, 111111L, 111111L, 111111L, 111111L,
111111L, 121212L, 121212L, 121212L, 121212L, 121212L, 121212L,
121212L, 111333L, 111333L, 111333L, 111333L, 111333L, 111333L,
111333L, 131313L, 131313L, 131313L, 131313L, 131313L, 131313L,
131313L, 444444L, 444444L, 444444L, 444444L, 444444L, 444444L,
444444L, 666666L, 666666L, 666666L, 666666L, 666666L, 666666L,
666666L, 777117L, 777117L, 777117L, 777117L, 777117L, 777117L,
777117L, 111111L, 111111L, 111111L, 111111L, 111111L, 111111L,
111111L, 111111L, 111111L, 111111L, 111111L, 121212L, 121212L,
121212L, 121212L, 121212L, 121212L, 121212L, 121212L, 121212L,
121212L, 121212L, 111333L, 111333L, 111333L, 111333L, 111333L,
111333L, 111333L, 111333L, 111333L, 111333L, 111333L, 131313L,
131313L, 131313L, 131313L, 131313L, 131313L, 131313L, 131313L,
131313L, 131313L, 131313L, 444444L, 444444L, 444444L, 444444L,
444444L, 444444L, 444444L, 444444L, 444444L, 444444L, 444444L,
666666L, 666666L, 666666L, 666666L, 666666L, 666666L, 666666L,
666666L, 666666L, 666666L, 666666L, 777117L, 777117L, 777117L,
777117L, 777117L, 777117L, 777117L, 777117L, 777117L, 777117L,
777117L, 111111L, 111111L, 111111L, 111111L, 121212L, 121212L,
121212L, 444444L, 131313L, 666666L, 777117L, 111111L), feeling = c(68L,
45L, 60L, 70L, 55L, 70L, 75L, 45L, 60L, 62L, 70L, 75L, 65L,
71L, 30L, 30L, 65L, 65L, 68L, 74L, 70L, 35L, 20L, 40L, 55L,
70L, 65L, 75L, 40L, 48L, 52L, 52L, 60L, 70L, 72L, 55L, 60L,
30L, 25L, 10L, 35L, 25L, 52L, 60L, 65L, 60L, 70L, 75L, 85L,
70L, 72L, 75L, 80L, 65L, 65L, 60L, 75L, 77L, 80L, 65L, 65L,
70L, 72L, 75L, 55L, 52L, 60L, 70L, 78L, 90L, 70L, 65L, 80L,
82L, 88L, 75L, 80L, 82L, 90L, 85L, 70L, 69L, 80L, 86L, 70L,
65L, 50L, 45L, 30L, 50L, 70L, 75L, 82L, 72L, 82L, 65L, 50L,
65L, 70L, 72L, 76L, 70L, 68L, 71L, 45L, 60L, 61L, 48L, 32L,
20L, 32L, 42L, 50L, 55L, 45L, 68L, 72L, 79L, 65L, 66L, 67L,
69L, 72L, 75L, 78L, 81L, 77L, 70L, 67L, 69L, 85L, 72L, 67L,
17L, 62L, 74L, 4L, 24L)), row.names = c(NA, -138L), class = "data.frame")
解决方案
推荐阅读
- firebase - redirect_uri_mismatch - 没有更新 URL 的可能性
- android - 安卓。调整调整大小不适用于特定设备
- c# - c# MimeKit 邮件未正确发送。System.Net.Mail 工作正常
- kubernetes - Kubernetes 上的 Hyperledger Fabric - Restarting Peer throw 错误几分钟
- cordova - Cordova IOS/Android 屏幕显示,带有凹口和软菜单
- django - 关闭 RabbitMQ 会使 Django 冻结
- flutter - 如何在flutter web中做一个可拖动的定位销选择器
- oracle - Oracle Apex 修改会话超时消息
- android - 为什么 Android Realm 与 MongoDb 同步时不返回任何结果?
- join - Pyspark 使用 sql join 连接多个数据帧