考虑以下列表:
answers = {
{{1, 2}, {7, 3}}, {{1, 3}, {6, 4}},
{{2, 1}, {2, 8}}, {{2,3}, {8, 2}},
{{3, 1}, {1, 9}}, {{3, 2}, {3, 7}}
}
在一个任务环境中,主体顺序呈现2个刺激,必须选择他们喜欢的刺激,第一个子列表:
{{1, 2}, {7, 3}}
可以读作
{{Cond1,Cond2},{Cond1 Preferred Count,Cond2 Preferred Count}}
因此,当在Cond1和&之间选择10次时当Cond1首先出现时,Cond2,Cond1优选为10次中的7次。
**
我需要有条件地提取和/或 总结列表的一部分。
**
到目前为止我一直在做的事情:
提取首先显示Cond1的列表:
Select[answers, #[[1, 1]] == 1 &]
= {{{1,2},{7,3}},{{1,3},{6,4}}}
并获得针对所有其他条件的一个条件的总计数:
Plus @@ Select[answers, #[[1, 1]] == 1 &][[All, 2]]
= {13,7}
现在,我需要:
查询Cond1 VS Cond2&的总数。 Cond2 VS Cond1:
{{{1, 2}, {7, 3}},{{2, 1}, {2, 8}}}
将是输出
或Cond2首次针对Cond3呈现时的总计数:
{{2,3}, {8, 2}}
这些是我所缺少的。 实际上共有5个条件
答案 0 :(得分:3)
我喜欢Cases
,因为我认为语法更清晰。这是一种方法,使用一些轻型实用功能:
In[25]:= conditions[pat_] := Cases[answers, {pat, _}]
In[26]:= conditionSums[pat_] := Total[Last /@ conditions[pat]]
In[27]:= conditions[{1, _}]
Out[27]= {{{1, 2}, {7, 3}}, {{1, 3}, {6, 4}}}
In[28]:= conditionSums[{1, _}]
Out[28]= {13, 7}
In[29]:= conditions[{1, 2} | {2, 1}]
Out[29]= {{{1, 2}, {7, 3}}, {{2, 1}, {2, 8}}}
In[30]:= conditions[{2, 3}]
Out[30]= {{{2, 3}, {8, 2}}}