Mathematica中的条件数据合并

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中的线.

  • 我不认为我会保持头在真实结构,所以它不应该是一个问题,但建议处理报头是欢迎(是否要删除它们,并将它们存储在其他地方或以特殊的方式对待他们)

**

编辑:精确的数据形状和我的目标

**

我将介绍如何获取这些数据以阐明其形状.我相信它可以用更精确的方式在技术上进行描述.请不要犹豫,纠正我.

我正在记录眼球运动(眼跳和注视)和受试者在屏幕上显示刺激时回答任务.

  • 每个试验包括两个连续显示,每个显示3秒.它是2AFC(两种替代强制选择).
  • 每个显示器包括呈现一个框架(大约1/4尺寸的屏幕),其中有8个形状,显示在屏幕的4个象限中的1个.
  • 帧本身的构成有5个条件,因此每个试验可能有10个条件(帧的1个条件与不重复的帧相对).
  • 有两种方法:在观察刺激时记录受试者的选择和眼球运动.

我从两个不同的来源获得这些数据:


  • "显示"机器,其提供

- 序号/显示号码

- 有关屏幕的信息

-条件

- 主题答案

-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 ...), - 显示信息(屏幕上对象的坐标), - 修复信息等...

  • 为每个变量都有一个数据类型(字符串,数字,文本)的摘要,范围,列的不同值以及一些基本的描述性统计信息.

  • 一种系统,以提取该组份条件(例如:由特定被摄体提取条件数,注视的持续时间,用于选择显示)这样我提取一些明确定义的表,则我上运行我的分析而不触及原始数据.

如果我用我的精确情况来表达我的问题,我相信,这可以产生一个很好的高效且图形化的易用工具来处理大量的数据集.

Sas*_*sha 5

这是一种可能性:

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)