。
横向连接
横向连接(Merge)可以使两个数据库结构不同的两个文件横向连接,但前提条件是这两个文件中必须有相同的标示变量或关键变量。比如一个文件中包含调查对象的家庭情况,而另一个文件中包含调查对象的实验室检查数据,但两个文件中都有一个相同变量来区别不同的调查对象,比如个人编号等。这时就可以把两个文件横向连接起来。 在“数据输入/输出”菜单下选择“纵向/横向连接”选项选择需要连接的两个文件后点击“确认按钮”。这时出现的对话框会显示要连接的数据文件的一般情况,选择横向连接后,键入连接后新文件的路径及名称。点击“确认”。两个原始文件不会有任何修改。
横向连接需要用户指定一个或多个标示变量来保证同一个调查对象的数据连接起来。最多可以指定3个标示变量。标示变量不必在核对文件中指定为KEY 或KEY UNIQUE,但是要必须保证两个文件中都存在。当选择横向连接后,计算机会把两个文件中的变量显示出来,如果没有共同变量,横向连接不会实现。另外,标示变量在数据文件中不能有重复。 文件的横向连接主要有两种方式:
1) 只有两个文件中都存在的记录连接起来。.
2) 两个文件中的数据都连接起来,这会导致很多变量的值是缺失值,因为两个数据文件中不匹配的记录不能连接。为了保证连接成功,两个文件中必须有相同字段。 注意:第一个数据文件作为主数据文件,如果第一个文件和第二个文件的变量类型不同新文件中变量类型以第一个文件为准。如果第一个文件和第二个文件都有核对文件,则计算机会自动把两个核对文件合成一个核对文件。用户应根据需要对新核对文件进行修改。特别要注意labels、jumps、goto语句和if ... then .... endif语句。
在纵向连接完成后计算机会显示一个有关文件连接的总结。
记录查找
如果知道记录号,用户可以用菜单中的“记录”下的“记录查找”功能直接查找记录,用户也何以直接按[Ctrl] + [G]后查找记录。如果不知道记录号,用户可以按[Ctrl] + [F],然后在出现的对话框中填入查找条件来查找记录。计算机总是把光标所在的字段默认为查找字
9
段,但是用户可以在下拉条下选择任何用来进行查找的字段,其中包括光标不能移入的字段,比如自动编码字段。
查找功能可以最多根据三个变量的值来查找。查找功能包括精确查找和模糊查找,查找方法可以在计算机中设置,比如是否包括打删除标记的记录等。按[F3]键或查找来按相同的查找条件进行查找。查找也可以按[Esc]键或按查找过程窗口的“取消”键来停止。如果查找缺失值则键入(.)作为查找值。用关键变量(核对文件中加KEY)来查找会使查找速度更快,但是要保证用来查找的变量都是关键变量。如果用户希望用某些变量进行查找,则可以考虑将这些变量设置为关键变量。按查找选项窗口中“重新设置”按钮,清除所有查找条件,然后重新执行查找。
数据双录入和核对
为了保证获得高质量的数据,让两个人分别对同一批问卷录入两遍是一个好方法。数据双录入完成后,可以用“数据管理”菜单下的“双录入核对”选项进行数据比较核对。在准备数据双录入过程中,可能需要复制数据库结构,该功能可以通过“工具”菜单的“拷贝数据库结构”选项完成,同时可以进行数据库结构拷贝选项设置,比如不包括字符型变量,因为字符型变量很少进行双录入。在选择完需要进行双录入核对的文件后,会出现一个对话框让用户对双录入核对进行设置。具体的操作包括:
选则关键字段
为了进行数据比较,必须至少指定一个关键字段。关键字段的作用是使两次录入的数据在比较时进行匹配。在下拉框中供选择的关键字段都是两个文件中同时存在的字段。在核对文件中指定为KEY的字段都有一个标记,这个标记会显示出来,但是被选定的关键字段在核对文件中可以没加KEY。如果不指定关键字段,则第一个文件和第二个文件按记录号进行比较,比如第一个文件中的第一条记录和第二个文件中的第一条记录比较。但是这种比较方式只有在问卷录入顺序完全相同的情况下才有意义。
选则项:
不考虑已删除的记录
在比较过程中计算机忽略已经有删除标记的记录
不考虑字符型字段
在比较过程中字符型和大写字符型字段不进行比较
不考虑字符型字段中的大小写
比如计算机认为 "Smith"和"sMiTh"相等
报告字段类型的区别
计算机会报告两个文件中变量名相同而变量类型不同的情况
不考虑第二个文件中的缺失记录
如果选择该设置,则计算机不给出第一个数据文件中有而第二个数据文件中没有的有关记录的信息。该设置非常有用,比如第二次录入只是在已经录入的问卷中选择一部分进行第二次录入时。在这种情况下要把包括全部数据的文件作为第一个文件。
按用户需要进行设置后点击“确定”按钮,两个文件就会进行比较,计算机给出比较结果。
常用核对命令
AFTER ENTRY
该核对命令用来指定在数据被录入字段后(或光标离开字段后)才执行的命令或程序。AFTER ENTRY指定一个命令块,而且必须以END来结尾。尽管没有指定AFTER ENTRY,
10
但计算机默认状态为所有命令都是在数据被录入字段后(或光标离开字段后)才执行。 举例:
AFTER ENTRY
...
END
AFTER FILE
指定需要在数据文件被关闭时才执行的命令。参见:BEFORE FILE. 举例:
AFTER FILE
HELP "Remember to make a backup of the data file!" TYPE=WARNING
END
AFTER RECORD
指定一条记录完全录入或修改完成后才执行的命令。使用AFTER RECORD 可以来检查数据录入的正确性。如果在AFTER RECORD命令块后面还有GOTO命令,则当前记录不会保存。下面的例子是要求录入员在数据录入把个人编码作为第一个字段,在记录录完时把个人编码作为最后一个字段以另一个变量重新录入一遍,以进行控制。如果两个变量的值不相同则给出提示,记录不保存,而且光标移入第一个字段。
举例:
AFTER RECORD
IF (ID1<>ID2) THEN
HELP "ID1=@ID1 and ID2=@ID2\n\nPlease check the data" TYPE=WARNING
GOTO ID1
EXIT
ENDIF
IF (ID1 = .) OR (ID2 = .) THEN
HELP "ID-number must be entered in ID1 and ID2" TYPE=ERROR
IF ID1 = . THEN
GOTO ID1
ELSE
GOTO ID2
ENDIF
ENDIF
END
AUTOJUMP
使光标无条件的跳转到另一个字段。跳转在光标离开该字段时执行。可参见JUMPS. 在该命令后可以加END或WRITE命令。AUTOJUMP END 可以使光标直接跳到最后一个字段。而AUTOJUMP WRITE可以直接调出是否存盘的对话框。 点击“是”则继续录入下一条记录。AUTOJUMP SKIPNEXTFIELD将光标移到下一个字段。
举例:
AUTOJUMP [name of field to jump to] AUTOJUMP END
11
AUTOJUMP WRITE
AUTOSAVE
当修改记录完成后计算机会询问是否存盘,从而让用户选择是否保存修改的记录。该过程可以通过在核对文件中加入AUTOSAVE命令来代替。该命令也可以作为程序的参数来使用。
注意:在使用AUTOSAVE后文件中的当前记录在计算机不给任何警示的情况下被覆盖掉。 举例:
BEFORE FILE
AUTOSAVE
END
BEFORE ENTRY
该命令指定在光标移入前(数据被录入前)所执行的的命令。BEFORE ENTRY指定一个命令块,而且必须以END来结尾。如果核对命令没有指定AFTER ENTRY或BEFORE ENTRY,则计算机默认为AFTER ENTRY。
举例:
BEFORE ENTRY
...
END
BEFORE FILE
指定在数据文件打开时(还没有录入数据)执行的命令。参见AFTER FILE.。BEFORE FILE经常在需要在数据文件中定义临时变量时使用。
举例:
BEFORE FILE
HELP "Welcome to my data file"
DEFINE varAge ###
DEFINE varRefDate
END
BEFORE RECORD
指定数据录入前(没有录入数据)所执行的命令。参见AFTER RECORD 举例:
BEFORE RECORD
varAge = 33
END
CLEAR
清除指定变量的内容。如果该命令后面没有指定变量,则包含该核对命令的变量中内容被清除。该命令只清除当前记录中指定变量中的内容,而不是清除所有记录该变量的内容。 举例:
12
CLEAR
CLEAR field5
COMMENTS (*)
注释语句必须以*开头。核对文件中以*开头的语句被认为是注释语句,不于执行。
COMMENT LEGAL
该命令的作用和LEGAL命令的作用相同,用来指定变量中能够录入的合法值。但是COMMENT LEGAL命令提供了一些选项,使用户在数据录入过程中可以通过按[F9]或数字键盘上的[+]来查看合法值列表,以及每个合法值的具体意义。
COMMENT LEGAL有四种不同的形式:
1) 命令块形式 COMMENT LEGAL
1 Denmark
2 USA
3 UK
4 Other
END
2) 使用其他变量的变量值标签 COMMENT LEGAL USE 变量名称 3) 使用在LABELBLOCK命令中,,指定的变量值标签 COMMENT LEGAL USE 标签名称
4) 使用包含变量值和标签的数据文件 COMMENT LEGAL 数据文件名[.rec]
注意在使用其他变量或文件中指定的变量值标签时必须使用USE。
在指定数据文件时,扩展名(.REC)不是必须的。但是该数据文件中必须有两个字段指定了KEY或KEY UNIQUE。其中有KEY 1或KEY UNIQUE 1的字段为数值字段;指定为KEY 2的字段是标签字段。
COMMENT LEGAL也可以用在IF..THEN结构中。 该功能使得一个变量值标签依赖于另一个变量的值时特别有用。用户可以参考下面的例子或HIERARTEST.REC、HIERARTEST.CHK文件中命令。 也可参见下面的TYPE COMMENT 命令。如果选项 SHOW加在COMMENT LEGAL命令中,则可以输入的变量值在数据录入过程中显示出来。 举例:
COMMENT LEGAL
1 Male
2 Female
END
COMMENT LEGAL USE [field name] SHOW COMMENT LEGAL USE [labelname]
用在IF..THEN结构中的例子:
V1 *User selects a country*
COMMENT LEGAL
1 USA
2 CANADA
END
END
13
V2 *User selects a state*
IF V1=1 THEN
COMMENT LEGAL
1 Alabama
2 "New York"
3 Nevada
4 Oklahoma
5 .....
END
ENDIF
IF V1=2 THEN
COMMENT LEGAL
1 "Nova Scotia"
2 Quebec
3 ....
END
ENDIF
END
使用数据文件时的例子:
NAMELOOKUP.REC 是有两个字段的一个数据文件:ID (整型)和NAME (字符型字段)。在核对文件中ID被定义为KEY UNIQUE 1,NAME被定义为KEY 2。PATIENTDATA.REC 是根据下面的.QES文件生成:
ID (病人编号) #####
HEIGHT 身高 ###
WEIGHT 体重 ###
核对文件PERSONDATA.CHK(PERSONDATA.REC)中包括:
ID
COMMENT LEGAL NameLookup
TYPE COMMENT
END
当在数据录入(PATIENTDATA.REC)过程中,只有NAMELOOKUP.REC文件中包括的ID号才能作为合法值录入。当光标离开ID字段时病人的姓名会出现在字段边上。
CONFIRM
当一个字段录满后光标可以自动移入下一个字段。该功能可以在核对文件中使用CONFIRM命令完成。当使用CONFIRM命令后,用户按回车键后光标自动移入下一个字段。
CONFIRMFIELD
该命令与CONFIRM相同,但CONFIRM对所有变量起作用,而CONFIRMFIELD只对包含它的变量起作用。
DEFINE
可以定义新变量和临时变量。这些变量可以用来存放计算中的中间结果,以及把一个记录中的值赋于另一个记录。DEFINE命令有CUMULATIVE和GLOBAL两个选项。在新记
14
录录入前,Cumulative 变量保留上一条记录的变量值并将新变量值进行累加。如果不用CUMULATIVE则变量值在数据录入之前为空,新录入的数值作为变量值。GLOBAL变量不重新赋值,所以可以用来在关联文件间传递数据。参见RELATE。用DEFINE命令定义的变量的变量名最多16个字符。临时变量不保存在数据文件中。
举例:
DEFINE MyTempVar #### CUMULATIVE DEFINE varSurname DEFINE tempDate