实验中,某些个体(ID: 1,2,3)接受了多种治疗(治疗: A,B,C)。治疗后3次记录应答变量(时间: 0,1,2)。因此,对于ID和治疗的每一个组合,都有3个输出。
我的数据是纵向格式的,由两个对象组成: datalabel和datamatrix。
Datalabel是一个27*3单元格,它包含有关在Datamatrix double (27x1)中的结果的ID、处理和时间组合的信息。
Datalabel看起来如下:
{'1', 'A', '0';
'1', 'A', '1';
'1', 'A', '2';
'1', 'B', '0';
'1', 'B', '1';
%datapoints in between
'3', 'C', '1';
'3', 'C', '2'}Datamatrix看起来如下:
[1;3;4;6; 8;
%datapoints in between
2;8]我想做的是,对于ID和处理的每一个组合,从所有三个输出中减去时间0的输出。其结果将是一个新的27x1倍,如下所示:
[0;2;3;0; 2;
%datapoints in between
-1;5]在这种情况下,这并不太困难。但是,我想找到一个通用的解决方案,无论有多少不同级别的“uur”、“处理”和“ID”,当某些动物没有接受某种治疗时,这种解决方案是有效的,当缺少观察时(对于uur=0),这种解决方案也能工作。
我希望我的问题很清楚有人能帮上忙,
提前感谢!
发布于 2014-03-19 16:51:07
同样,正如注释中所述,我已经有一段时间没有使用Matlab了,我完全相信有更好的方法可以做到这一点,但是使用for循环,我可以想象出如下解决方案:
for val = 1:numel(Datamatrix)
if Datalabel{val,3} == '0'
ToSubtract = Datamatrix(val);
end
ChangedDataMatrix(val) = Datamatrix(val) - ToSubtract;
end这应该是:
同样,我不怀疑这可以用其他方式完成,但我现在在编程模式比Matlab更多,但我希望这能做到!!
https://stackoverflow.com/questions/22511350
复制相似问题