在R中重新绑定数据帧

问题描述 投票:0回答:1

我有一个数据框,它保存不同组(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中以一种可以应用于任何具有不同列数的数据帧等方式来实现它。

r binning
1个回答
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))
© www.soinside.com 2019 - 2024. All rights reserved.