gpt4 book ai didi

r - 使用 dplyr 对具有不同长度的个体的时间序列组进行平均

转载 作者:行者123 更新时间:2023-12-02 16:31:10 27 4
gpt4 key购买 nike

考虑在此处创建的 dat:

set.seed(123)
ID = factor(letters[seq(6)])
time = c(100, 102, 120, 105, 109, 130)
dat <- data.frame(ID = rep(ID,time), Time = sequence(time))
dat$group <- rep(c("GroupA","GroupB"), c(322,344))

dat$values <- sample(100, nrow(dat), TRUE)

我们有 6 个个体(6 个 ID)的时间序列数据,它们属于 2 个组(GroupAGroupB)。我们想制作一个线图来显示两组的“平均”时间序列(因此会有两条线)。由于个体的长度各不相同,我们需要执行 dat%>%group_by(group),并在两个组中削减最短的 ID 之后的值。换句话说,ID == a 是组 1 中最短的,因此 GroupA 的“平均”行在 x 轴上的长度仅为 100 个值;同样,ID == dGroupB 的最短时间序列,因此 GroupB 的“平均”时间序列在 x 轴上的长度为 105 个值( 时间)。我们如何做到这一点(最好通过 dplyr 管道)并将数据发送到 ggplot()

最佳答案

你可以试试:

library(ggplot2)
library(dplyr)

dat %>%
group_by(ID) %>%
mutate(maxtime = max(Time)) %>%
group_by(group) %>%
mutate(maxtime = min(maxtime)) %>%
group_by(group, Time) %>%
summarize(values = mean(values)) %>%
ggplot(aes(Time, values, colour = group)) + geom_line()

关于r - 使用 dplyr 对具有不同长度的个体的时间序列组进行平均,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63493318/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com