#!/bin/bash # # Script: Dummy.sh # Purpose: Creates dummy variables for a categorical variable; uses R # Author: T. Nichols # Version: $Id: Dummy.sh,v 1.2 2012/02/28 17:00:51 nichols Exp $ # ############################################################################### # # Environment set up # ############################################################################### shopt -s nullglob # No-match globbing expands to null TmpDir=/tmp Tmp=$TmpDir/`basename $0`-${$}- trap CleanUp INT ############################################################################### # # Functions # ############################################################################### Usage() { cat < $Tmp.R x=read.table("$TabIn",header=TRUE,sep=",") y=1:dim(x)[1] D=model.matrix(y~C(x[,1],sum)) D=D[,-1] write.table(D,"${Tmp}.dat",sep=",",row.names=FALSE,col.names=FALSE) EOF elif [ "$ConTyp" == "anova" ] ; then cat < $Tmp.R x=read.table("$TabIn",header=TRUE,sep=",") y=1:dim(x)[1] D=model.matrix(y~-1+C(x[,1],treatment)) write.table(D,"${Tmp}.dat",sep=",",row.names=FALSE,col.names=FALSE) EOF else echo "ERROR: Invalid contrast type '$ConTyp'" CleanUp fi # # Run R script # R --vanilla --slave < $Tmp.R >& /dev/null # # Set header # nVar=$( awk -F, '(NR==1) {print NF}' $Tmp.dat ) cp /dev/null "$TabOut" for (( i=1; i<=nVar; i++ )) ; do printf "%s-%d" "$VarNm" $i >> "$TabOut" if (( i> "$TabOut" else printf "\n" >> "$TabOut" fi done # # Add on data # cat $Tmp.dat >> "$TabOut" ############################################################################### # # Exit & Clean up # ############################################################################### CleanUp