从Excel表格、仪器软件或者业务系统里把实验数据导入到JMP以后,有两类整理问题经常冒出来,一种是一列里面硬塞着好几个信息字段,另一种是你想把两张不同的表放在同一张图里做比较,所以要摸清楚JMP里面怎么把一列的内容给它分开,以及怎么把两个表合到一张图上去,操作本身说不上有多复杂,但动手之前得先看看数据是用什么分隔符拆开的,每一列又是什么字段类型,还有两张表的结构之间是个什么关系,因为如果数据没有提前理顺,就算图能硬画出来,那个分组结果也很可能让人没法相信。
一、JMP如何把一列的内容分列
JMP里面这个分列的功能,适合用来对付那些靠逗号、短横线、空格、制表符或者换行符号分隔的数据,比方说某一列里面写的是“苏州,华东,120”,那就可以把它拆成地区、区域和数值三列,各归各的位置。
首先,我们得在数据表里先把打算拆开的那一列给点选起来,点击列表头,确认整列都已经在选中状态,通常这种列应该是字符类型的才会比较顺手,如果碰上本来就是数值列或者日期列,那就最好先去检查一下它们的格式,免得一拆之后数值变了样,或者日期被错认成别的。
选中列之后,接着就去菜单里面点【Cols】,顺着【Utilities】往下找到【Text to Columns】这个功能,在弹出的窗口里头,把你碰到的分隔符填进去,不管是逗号、空格还是短横线都行,JMP会根据每一行里面能拆出多少个字段,自动按最多的那个数量去生成对应几列新字段,而且这个工具不光能认普通符号,制表符和换行符它也是支持的。
拆分完成以后,那些新生成的字段就会出现在数据表当中,这个时候一定要记得随手抽查几行看看,主要是看里面有没有留着一堆多余的空格,或者有些地方是空的缺失值,还有是不是出现了分隔符混用的状况,就比如有些行用的是英文逗号,另几行却用了中文逗号,这种不一致就会让拆分结果变得乱七八糟。
最后,还要把新拆出来的那些数字列的字段类型重新设置一下,因为很多时候它们虽然看起来是数字,但属性还停留在字符上,这时就点开列名旁边的小三角按钮,进到【Column Info】里面,把数据类型改成Numeric,至于像样品编号、样品名称,还有那些需要保留前导零的序号,就继续让它们留在Character类型,免得“001”这种编号被JMP当成数字,一下子缩成了“1”。
二、JMP怎么把两个表在一张图里
在JMP里面画图,一般都是围绕着当前打开的那张数据表来进行,所以假如要把来自两张表的信息塞进同一张图里面,通常的做法是先把它们的数据合并到一块儿去,再用一个能标明数据是从哪张表来的列去区分开两组结果,如果这两张表的字段结构不一样,那就得靠一个共同的关键列先把它们关联连接起来。
当两张表的列名称和各自代表的含义完全相同时,唯一的差别只是批次、月份或者实验组不一样,那就可以用纵向合并的办法,先给每张表分别加上一列,这列可以叫“数据来源”,然后各自填上比如“批次A”和“批次B”,接着在这两张表都打开的状态下,去点菜单里的【Tables】→【Concatenate】,这样数据就会上下拼接到一块儿,成了一张新表,JMP里面的Concatenate本来就是专门用来把多个表按行拼在一起的。
要是这两张表记录的指标互不相同,但偏偏都有一列是样品编号,或者日期、批次号这种能对上号的东西,那就要换Join这个功能,同样是去【Tables】菜单里面选【Join】,在弹出的窗口里选好要跟哪一张表做连接,再指定用来匹配的那一列字段,JMP的Join窗口可以让你自己挑连接的表、匹配的方式,还有最后输出的新表名字。
等数据终于并成了一张完整的新表,接下来就点【Graph】→【Graph Builder】进到作图界面,在Graph Builder里面,把时间、浓度或者批次这类变量拖到X轴上去,再把你想看的结果数值拖到Y轴,然后最关键的一步,是把刚才我们造出来的那个“数据来源”列拖到【Overlay】区域里,这样一来,两张表的那些数据点或线条就会在同一张图里面,用不同的颜色或者符号分组显示出来了。
还有一点需要特别注意,就是千万不要直接把两个单位或统计口径不一样的东西混在一起,比如一张图里,可能某一个表用的单位是毫克,另一个表用的却是克;再比如张三是按天记录的数据,李四那边是按时辰记的,这些差异要是没提前统一好,直接把它们叠加到一张图里去,就很容易把数据变化的趋势看歪了,得出错误的结论。
三、JMP分列和合并后的核对工作
无论是分列还是合并,这些数据整理的步骤都做完以后,多花个几分钟去核对一下,比你图都画漂亮了才发现不对再回头返工,反而要省事得多。
首先是核对行数有没有变化,正常情况下,分列不应该让原始数据的行数多出来或者少掉,而纵向合并之后的总行数,差不多就是原来那两张表行数加总起来的数目,如果发现数字对不上,那就要去查一查是不是有哪行被筛选条件给过滤了、有隐藏行没放出来,或者有些记录本身就缺失了。
其次要紧盯那些匹配字段,特别是用过Join功能以后,样品编号、日期或者批次号这些地方要看有没有重复冒出来的,万一匹配字段本身就不唯一,连来连去很容易就会造成结果里多出好多原本没有的扩展行,搞得数据乱套。
最后,始终要让自己保留一份没动过手脚的原始数据表,不要把原表给直接覆盖掉,分列和合并生成的结果可以另外保存成新的文件,而你在Graph Builder里头做好的那张图,也可以顺手把脚本保存在数据表里面,往后如果更新了新的数据,还能把这个画图流程拿出来直接套用,非常方便。
总结
数据表的整理看着像是正式分析前的一些毛毛雨,好像没那么重要,可实际上它会对后面画出来的图形判断产生直接的影响,想弄明白JMP里面怎么把一列内容分列,以及怎么把两个表的线画到一张图里,完全可以按照“先分列、再查字段类型、接着合并数据、然后设置好数据来源列、最后进Graph Builder作图”这个顺序去走,字段结构相同就用Concatenate上下拼,字段不同但有共同的编号或时间戳做钩子的时候就用Join去连,最后再靠Overlay把两组结果同时铺展在同一张图里面,这样处理下来,打底的数据是牢固的,图上的结果才站得住脚。
