preserve. set printback=off. *-------------------------------------------------------------. * /*xp2wedata マクロ for spss. by k.hori(hori@ec.kagawa-u.ac.)2.0. */ * 2005.12.4. *-------------------------------------------------------------. /*xp2wedata fvar=freq /var=x m/evar=硬度 経験 水温/nvar=3 2 2 /rvar=好み/p=1. */ *var=クロス表データ/evar=行変数名リスト . * /nvar=行一番外変数から順にカテゴリ数. * /rvar=列変数名(反応変数). * /fvar=頻度データ変数. * /p=精度(小数点以下第x位まで。整数の場合は0). * 注意:列変数のカテゴリ数は入れない。 *-------------------------------------------------------------. define xp2wedata (fvar=!charend('/') /*頻度データ*/ /var=!charend('/') /* current data パーセントデータ */ /evar=!charend('/') /*output var name */ /rvar=!charend('/') /*response var name */ /nvar=!charend('/') /p=!default(1)!charend('/') /* 精度 */ ). *------------------------------------------------------------. *****************************************************************. descriptives var=!fvar/statistics=sum. matrix. get x /file=* /variables=!fvar !var /missing=omit/sysmis=omit/names=nx. compute fx=x(:,1). compute x=x(:,2:ncol(x)). *print x. compute nd=ncol(x). compute n=nrow(x). compute a=make((n+1),1,0). *print a. compute na=n. compute pre=5/(10**(!p+1)). * print pre/format f8.4. *******************************. *カテゴリ表作成. compute a=make((n+1),1,0). compute na=n. !do !I !in (!nvar). compute a1={0}. compute na1=na. compute na=na/!i. compute nb=n/na1. loop k=1 to nb. loop i=1 to !i. compute da=make(na,1,i). compute a1={a1;da}. end loop. end loop. compute a={a,a1}. * compute a={a1,a}. !doend. *compute a=a(2:nrow(a),1:(ncol(a)-1)). compute a=a(2:nrow(a),2:ncol(a)). *********************************. *print a. *頻度計算. compute z={make(n,1,1),a,trunc(x(:,1)&*fx/100+.5),((x(:,1)-pre)&*fx/100),((x(:,1)+pre)&*fx/100)}. * print z. *. loop i=2 to nd. do if (ncol(a)>=1). compute dz={make(n,1,i),a,trunc(x(:,i)&*fx/100+.5),((x(:,i)-pre)&*fx/100),((x(:,i)+pre)&*fx/100)}. else. compute dz={make(n,1,i),trunc(x(:,i)&*fx/100+.5),((x(:,i)-pre)&*fx/100),((x(:,i)+pre)&*fx/100)}. end if. *print dz. compute z={z;dz}. *. end loop. **********************************. save {z}/outfile=*/var=!rvar !evar frq 最小値 最大値. end matrix. format !evar !rvar frq(f5.0). format 最大値 最小値(f5.0). exec. compute 差異=最大値-最小値. format 差異(f5.0). descriptives var=frq to 最大値/statistics=sum. means var=frq to 最大値 by !evar by !rvar /cells sum. exec. weight frq. !enddefine. restore. *--------------------------------------------------------------.