我有一个数据框,其中保存了不同组(G)中多个主题(S)在时间(T)上的活动(A)数据。每10分钟取样一次活动数据。我想做的是将数据重新绑定到例如30分钟的分区(添加或取平均值)中,以保留主题ID和组信息。
示例。我有这样的东西:
S G T A
1 A 30 25
1 A 40 20
1 A 50 15
1 A 60 20
1 A 70 5
1 A 80 20
2 B 30 10
2 B 40 10
2 B 50 10
2 B 60 20
2 B 70 20
2 B 80 20
我想要这样的东西:
S G T A
1 A 40 20
1 A 70 15
2 B 40 10
2 B 70 20
时间是平均时间(例如,在示例中)还是第一个/最后一个时间点,活动的平均时间(再次是,在示例中)还是累加现在并不重要。
我将很感谢您在此方面提供的任何帮助。我当时正在考虑使用Python创建脚本来重新绑定此特定数据框,但我认为可能有一种在R中执行此脚本的方法,该方法可以应用于具有不同列数等的任何数据框。 / p>
答案 0 :(得分:0)
有一些方法可以实现期望的数据帧。 我转载了您的数据框:
df <- data.frame(S = c(rep(1,6),rep(2,6)),
G = c(rep("A",6),rep("B",6)),
T = rep(seq(30,80,10),2),
A = c(25, 20, 15, 20, 5, 20, 10, 10, 10, 20, 20, 20))
经典方式可能是:
df[df$T == 40 | df$T == 70,]
更现代的
library(tidyverse)
df %>% filter(T == 40 | T ==70)
如果要获取针对T == 40和70过滤的每组G的平均值:
df %>% filter(T == 40 | T == 70) %>%
group_by(G) %>%
mutate(A = mean(A))