我有一组数据,其中我以 3 个读数为一组记录了值(以便能够获得 SEM 的一般概念)。我将它们记录在一个如下所示的列表中,我试图将其分解为每组 3 个点的平均值:
我想基本上将每 3 行折叠成一行,其中给出了该集合的平均数据值。本质上,它看起来如下:
这是我基本上知道如何在 Excel 中做的事情(即使用数据透视表),但我不确定如何在 MATLAB 中做同样的事情。我尝试过使用accumarray
,但很难知道如何从本质上合并多个条件。我需要创建一个subs
数组,其编号对应于每组唯一的 3 个数据点。通过蛮力,我可以创建一个数组,例如:
subs = [1 1 1; 2 2 2; 3 3 3; 4 4 4; ...]'
使用一些循环并将其作为我的 subs 数组,但由于它与数据本身无关,并且整个过程中可能会出现奇怪的问题(即每组超过 3 个数据点,或丢失数据等)。我知道必须有某种方法可以为这样的事情进行这种 Pivot-table-esque 分组,但需要一些帮助才能使其起步。谢谢。
这是文本形式的输入数据:
Subject Flow On/Off Values
1 10 1 2.20
1 10 1 2.50
1 10 1 2.60
1 20 1 5.50
1 20 1 6.10
1 20 1 5.90
1 30 1 10.10
1 30 1 10.50
1 30 1 10.50
1 10 0 1.90
1 10 0 2.20
1 10 0 2.30
1 20 0 5.20
1 20 0 5.80
1 20 0 5.60
1 30 0 9.80
1 30 0 10.20
1 30 0 10.20
2 10 1 5.70
2 10 1 6.00
2 10 1 6.10
2 20 1 9.00
2 20 1 9.60
2 20 1 9.40
2 30 1 13.60
2 30 1 14.00
2 30 1 14.00
2 10 0 5.40
2 10 0 5.70
2 10 0 5.80
2 20 0 8.70
2 20 0 9.30
2 20 0 9.10
2 30 0 13.30
2 30 0 13.70
2 30 0 13.70