r - 如何绘制多个个体的平均时间序列
问题描述
我有时间序列数据,其中 7 个变量 ( Var1:Var7
) 的测量值是对 15 个人进行的(用唯一的 表示ID
)。这些人是从 3 个不同Location
的 s 中取样的。请注意,每个人的观察次数是不同的。我相信每个人中的个体在价值和趋势Location
上都会比其他个体中的个体更相似。Location
对于 eachVariable
中的每个Location
,我想绘制平均时间序列(以了解整个组的样子)直到Time
每个人都相同(因此 x 轴的长度只会与最短的个体一样长)。我怎样才能做到这一点并为每个添加错误栏Time
点看个人之间存在多少差异?以下是一些示例数据:
set.seed(123)
ID = factor(letters[seq(15)])
Time = c(1000,1200,1234,980,1300,1020,1180,1908,1303,
1045,1373,1111,1097,1167,1423)
df <- data.frame(ID = rep(ID, Time), Time = sequence(Time))
df$Location = rep(c("NY","WA","MA"), c(5714,7829,4798))
df[paste0('Var', c(1:7))] <- rnorm(sum(Time))
解决方案
所有变量的值都是相同的,所以我做了以下使其更随机:
for(i in 1:7) df[paste0('Var', i)] <- rnorm(sum(Time))
然后下面的代码给出了三个位置平均的 7 个变量中的每一个的时间序列图。
df %>%
pivot_longer(cols = Var1:Var7, names_to="Variable") %>%
group_by(Location, Variable, Time) %>%
summarise(mval=mean(value)) %>%
ggplot(aes(y=mval, x=Time, color=Variable)) +
geom_line() +
facet_grid(~Location) # , scales="free" # ?
我不确定这是否是您的想法。
推荐阅读
- c++ - C++ 中的通用属性访问
- android - Android 访问在属性中查看模型实例
- python - 如何从图像中删除方括号?
- html - Scss+Pug+Webpack配置问题
- php - 将三种不同的形式合二为一并在 wordpress 中得到结果
- python - Grad-CAM算法的实现
- java - 我的 Java 删除方法有问题
- javascript - 多次链 setState
- android - 使用 Kotlin 和 SQLite 在 Android X 中制作一个简单的可点击列表(Android Studio 4.1)
- python - 如何使用 pyppeteer 在新标签页中打开 url?