重新绑定R中的数据帧

时间:2019-04-10 20:01:53

标签: r binning

我有一个数据框,其中保存了不同组(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>

1 个答案:

答案 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,]

更现代的 tidyverse 方法是

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))