500*_*500 3 merge conditional wolfram-mathematica data-structures
我需要合并来自两个不同来源的数据.下表说明了我的所作所为:

和期望的输出:

这个想法是:
看看第一个col.表1(TrialNO)
在第一个col中寻找它.表2.
检查第二个col中的值.是相等的(实际上那些col.不会位于2个列表中的相同位置)
如果Check是pass,则追加col中的值.3和4(Cond1和Cond2)到表2中的线.
我不认为我会保持头在真实结构,所以它不应该是一个问题,但建议处理报头是欢迎(是否要删除它们,并将它们存储在其他地方或以特殊的方式对待他们)
**
**
我将介绍如何获取这些数据以阐明其形状.我相信它可以用更精确的方式在技术上进行描述.请不要犹豫,纠正我.
我正在记录眼球运动(眼跳和注视)和受试者在屏幕上显示刺激时回答任务.
我从两个不同的来源获得这些数据:
- 序号/显示号码
- 有关屏幕的信息
-条件
- 主题答案
-X和Y坐标以及构成所显示刺激的11个对象的大小.
在此矩阵中,每行都是一个显示,因此DisplayNO列将从1到400(1,2,3,4,...,400),而TrialNO列实际上从1到200(1,1,2) ,2,..,200,200)因为每次试验有2个显示器.
- 一些类似的信息(显示号码(1到400),用于合并2,条件号码,可用于检查映射赌注.)2)
然后是大量描述眼球运动的变量:
- 固定和扫视持续时间,位置,时间等(约100列)
在这个矩阵中,每一行都是固定.然后以列(前一个和下一个扫视)给出扫视特征.每个显示器可以有1到30-50个固定.结果,我可以为第一个显示器提供19行数据,为第二个显示器提供5行数据.
第一步是合并2和2数据结构以获得一个大的,每行对应一个固定.
必须为每个主题执行此操作,然后将主题数据聚合在一起.
这是我后来处理这个怪物的计划(这将解释我在其他问题中的需求):
提取标题和列号.
以漂亮的表格形式呈现他们 - 一般信息(试用ID,条件,主题ID ...), - 显示信息(屏幕上对象的坐标), - 修复信息等...
为每个变量都有一个数据类型(字符串,数字,文本)的摘要,范围,列的不同值以及一些基本的描述性统计信息.
一种系统,以提取该组份条件(例如:由特定被摄体提取条件数,注视的持续时间,用于选择显示)这样我提取一些明确定义的表,则我上运行我的分析而不触及原始数据.
如果我用我的精确情况来表达我的问题,我相信,这可以产生一个很好的高效且图形化的易用工具来处理大量的数据集.
这是一种可能性:
MergeTables[data1_, data2_, samepos1_, samepos2_] :=
Cases[data1,
x_ :> Block[{y =
Cases[data2, z_ /; z[[samepos2]] === x[[samepos1]]]},
Apply[Sequence, Join[x, Delete[#, Thread[{samepos2}]]] & /@ y]]]
Run Code Online (Sandbox Code Playgroud)
用法:
MergeTables[data2, data1, {1, 2}, {1, 2}]
Run Code Online (Sandbox Code Playgroud)