一、基础语法认知
1.题标签【批量添加】
VARIABLE LABELS
A1 '第一次体检时间'
A4 '第一次体检身高'
A56 '第一次体检腰围'
A9 '第一次体检体重'
A1011 '第一次体检臀围'
A12 '第一次体检体脂率'
B1 '第二次体检时间'
B4 '第二次体检身高'
B56 '第二次体检腰围'
B9 '第二次体检体重'
B1011 '第二次体检臀围'
B12 '第二次体检体脂率' .
EXECUTE.
2.值标签
VALUE LABELS A2
3 '11月23日'
4 '11月24日'
5 '11月25日'.
EXECUTE.
3.修改变量的类型
字符串类型【宽度200】
ALTER TYPE
G2011_text
G2012_text
G2013_text
G2014_text
G2015_text(A200).
EXECUTE.
数值类型【宽度30,小数位数1】
FORMATS id006(F30.1).
EXECUTE.
4.生成新变量【默认新变量的类型是数值型】
定义字符串变量【宽度100】
STRING aa(A100).
EXECUTE.
定义日期变量【宽度8】
*id005、id006 为时间变量.
FORMATS id005(TIME8.0).
FORMATS id006(TIME8.0).
EXECUTE.
5.修改变量名
RENAME VARIABLES
(Q5=Q51).
EXECUTE.
二、变量运算
1.计数
单选计数【缺失值计数】
COUNT w12=a(MISSING).
VARIABLE LABELS w12 '计数'.
EXECUTE.
多选计数
0-1格式
COUNT NG4=G401_1 G401_2 G401_3 G401_4 G401_5 G401_6 G401_7 G401_8(1).
VARIABLE LABELS NG4 'G4计数'.
EXECUTE.
数值格式
COUNT NK9=K9_1 K9_2 K9_3 K9_4 K9_5 K9_6 K9_7 K9_8 K9_99999(1 thru 99).
VARIABLE LABELS NK9 'K9计数'.
EXECUTE.
2.新变量和计算
SUM&COMPUTE
* 值之间的加和减,最好选用sum函数进行计算. *需要考虑到系统存在缺失值不被改变.
* COMPUTE 函数后写公式式.
COMPUTE NQ29=sum(NQ28,-NQ27). *求和.
COMPUTE NQ29=mean(Q28,Q27). *求均值.
EXECUTE.
*小技巧
当要求计算的变量很多且变量是连续的时候,可以采用简化的语法编写。
如A2_1 to A2_17 A2_95 A2_99
compute a=sum(A2_1 to A2_99).
execute.
要注意的是,当A2_95与A2_99调换位置时,A2_95就不会被计算在内。
小案例:各年龄端段汇总
COMPUTE G2_text=sum(G2_1_text,G2_2_text,G2_3_text,G2_4_text,G2_5_text,G2_6_text).
VARIABLE LABELS G2_text '年龄文本'.
EXECUTE.
小案例:开始时、分合并成开始时间
COMPUTE id005=TIME.HMS(id005a,id005b).
COMPUTE id006=TIME.HMS(id006a,id006b).
EXECUTE.
IF【根据已有的变量和设定条件产生新的变量】
应用场景:变量的选项合并、多变量条件产生新变量
IF totalseconds>=35&totalseconds<=60 N=1.
IF totalseconds>=61&totalseconds<=90 N=2.
IF totalseconds>=91&totalseconds<=120 N=3.
EXECUTE.
3.值转换
重新编码成不同变量
应用场景:变量的选项合并、选项分值转换
*保留缺失状态.
*此处考虑else=copy .
RECODE Q27 (1=3) (2=2) (3=1) (4=0) (else=copy) INTO NQ27.
#简化的写法
RECODE A4 (1=1) (ELSE=2) INTO NA4.
重新编码成相同变量
*保留缺失状态.
*此处考虑else=copy .
RECODE Q27 (1=3) (2=2) (3=1) (4=0) (else=copy) INTO Q27.
三、其他可能用到的语法
1.唯一码
*生成唯一码.
COMPUTE pp=$casenum.
VARIABLE LABELS pp '唯一码'.
EXECUTE .
2.注释
给SPSS语法syntax加上易懂的注释的方法:
1. 以星号*或COMMENT开头,以.结束。中间可加上任意注释,甚至可以断行。
2. 使用 /* 注释内容 */ 标注可将注释内容加入任何位置。
3.其他的小需求
选项降序:
ORDER=D KEY=COUNT EMPTY=INCLUDE TOTAL=YES POSITION=AFTER
转换成
ORDER=D KEY=LABEL EMPTY=INCLUDE TOTAL=YES POSITION=AFTER
根据条件修改变量值
COMPUTE kc=kongchao.
DO IF q181>2.
RECODE kc(1=0).
END IF.
合并
1、文本的合并
string aa(A8). #定义一个宽度为8的字符串变量
compute aa=concat(a1,":",a2).
execute.
2、 单选题合并(两个选项一致,问题相似的题目)
要求:
语法:
IF A2=1&A3=1 A7=1.
IF A2=1|A3=1 A7=2.
IF A2=2&A3=2 A7=3.
EXECUTE.
3、 多选题合并
要求:A1_1 to A1_3 A2_1 to A2_4 合并成新的变量A3。
1)多选题格式:0-1
IF A1_1=1 A3_1=1.
IF A1_2=1 A3_2=1.
IF A1_3=1 A3_3=1.
IF A2_1=1 A3_4=1.
IF A2_2=1 A3_5=1.
IF A2_3=1 A3_6=1.
IF A2_4=1 A3_7=1.
EXECUTE.
注释:A3题0-1转多选,整理一下A3题的标签1-7中1-3是A2题的选项标签,4-7是A3题的选项标签。
2)多选题格式:1-N
IF A1_1=1 A3_1=1.
IF A1_2=2 A3_2=2.
IF A1_3=3 A3_3=3.
IF A2_1=1 A3_4=4.
IF A2_2=2 A3_5=5.
IF A2_3=3 A3_6=6.
IF A2_4=4 A3_7=7.
EXECUTE.
注释:A3题为A1、A2题所有选项按照顺序堆积成的,确定好值与标签间的对应关系。