BEGIN{ FS="\t"; #背景色 mm="#a0a0a0";#元データ見出し sm="#c0c0c0";#集計見出し sd="#e0e0e0";#集計データ si="#d0d0d0";#集計の合計データ } { for(i=1;i<=NF;i++){ d[NR,i]=$i; n[$i]=1; } } END{ # データのバリエーションをソートしておく。s[] にバリエーションを入れる c=1; for(i in n){ s[c++]=i; } en=c-1; # バブルソートでいいやん for(i=1;i<=en;i++){ for(j=1;j<=en;j++){ if(s[i]クロス頻度集計結果"; # 1行目 見出しを追加 # 元データの横位置番号を表示 printf"
クロス頻度集計結果
\",mm; for(i=1;i<=NF;i++){ printf"[%d]",i; } # 集計見出し を表示 if(s[1]==""){s[1]="blank"} for(i=1;i%s",sm,s[i]; } printf "%s\n",sm,s[en]; # 元データを表示 for(i=1;i<=NR;i++){ # 行頭に縦位置を追加  printf"
%d",mm,i; # 元データを表示 for(j=1;j<=NF;j++){ if(d[i,j]==""){d[i,j]=" "} printf"%s",d[i,j]; } # 元データの後に 集計数を追加 for(j=1;j%d",sd,sy[i,j]; } printf "%d\n",sd,sy[i,en]; # 1行分終わり } # 縦集計を表示 for(i=1;i<=en;i++){ # 行頭は 集計見出し printf"
%s",sd,sm,s[i]; ttl=0; for(j=1;j<=NF;j++){ printf"%d",st[j,i]; ttl=ttl+st[j,i]; } for(j=1;j<=en;j++){ if(j==i){printf"%d",si,ttl} else{printf" ",si} } print""; # 1行分終わり } # 終了 print"
"; }