%*************************************************************************% % READ01.ISU % %*************************************************************************% % Indlæsning af filen 6801.TXT (Mars) med passende valg af variabelnavne. % Data gemmes på et ISUW datasæt ved navn opg2_01.SUD. % MAERKE er defineret som en faktor med 19 niveauer, idet mærke 20 % ("Star Bar") ikke er blevet købt en eneste gang. % TILBUD er defineret som en faktor på 13 niveauer, jvf. tabel, selvom % niveau 4 (coupon offer from magazine) ikke forekommer. Det burde man % muligvis lave om. n=11246 var resp dag pence radio ots1 ots2 ots3 ots4 ots5 ots6 ots7 ots8 ots9 ots10 \ ots11 ots12 ots13 ots14 ots15 ots16 ots17 ots18 ots19 ots20 ots21 ots22 \ ots23 ots24 ots25 ots26 ots27 ots28 n fac maerke n 19 fac tilbud n 13 open 6801.txt { idet filen forudsættes at ligge på arbejdsbiblioteket } read resp dag maerke tilbud pence radio ots1 ots2 ots3 ots4 ots5 ots6 \ ots7 ots8 ots9 ots10 ots11 ots12 ots13 ots14 ots15 ots16 ots17 ots18 \ ots19 ots20 ots21 ots22 ots23 ots24 ots25 ots26 ots27 ots28 save opg2_01 %*************************************************************************% % PDATA01.ISU % %*************************************************************************% % Dannelse af et datasæt af længde antal respondenter (= 560) vedrørende % Mars bar (altså filen 6801.txt). % Nye variates af længde 560: % NR Løbende nummer 1..560 % ANTAL Antal køb foretaget af respondenten % MARS Antal køb af Mars bar foretaget af respondenten % PENCE Den gennemsnitlige købsstørrelse i pence % MPENCE Den gennemsnitlige størrelse af købenes Mars-andel % RADIO Respondentens RADIO variabel % OTS'erne er ikke med i denne omgang, gennemsnitlige OTS'er % kan dannes tilsvarende. % Disse variates dannes og gemmes i et datasæt ved navn pdata01. % Det forudsættes at variablene i det "lange" datasæt i forvejen er % indlæst, med navne som foreslået i opgaveteksten, og placeret i et % datasæt ved navn opg2_01. del get opg2_01 var i n { n=11246 } i=1 exclude 1 i=i(#-1)+(resp(#)<>resp(#-1)) includeall % i indeholder herefter fortløbende respondentnumre 1..560. rename pence pence_ rename radio radio_ { for at bruge navnene pence og radio til nye variable } $mars=(maerke=1) { $mars bliver indikator for køb af Mars bar } $mpence=pence_*$mars { $mpence bliver beløb betalt for Mars bar, } { 0 hvis andet mærke er købt } % Bemærk: Et variabelnavn kan begynde med et dollartegn. I så % fald vil den pågældende variabel blive slettet når programmet % slutter. Bruges til "lokale variable", ikke absolut nødvendigt her. % Vektorerne i det "korte datasæt" erklæres: var nr antal mars pence mpence radio 560 % Indledning til løkke nr=# { løbenummer 1..560 } echo 0 { for at undgå kommando-ekko fra de 560 gennemløb af løkken } $j=0 { tællevariabel $j (får automatisk længde 1) nulstilles } % Og så selve løkken: %LoopStart $j=$j+1 exclude i<>$j { kun data vedrørende respondent nr. $j er nu "synlige" } pence($j)=mean(pence_) mpence($j)=mean($mpence) radio($j)=mean(radio_) mars($j)=sum($mars) antal($j)=#($mars) { #(v) er længden af v, korrigeret for restriktioner } includeall goto %LoopStart $j<560 echo 1 { kommando ekko slås til igen } save pdata01 nr antal mars pence mpence radio %*************************************************************************% % PDATA01.ISU , ny version (14/11-01) % % %*************************************************************************% % Ovenstående program er urimeligt kompliceret. Det følgende er meget % hurtigere (ca. 2 min på min maskine) % Nye variates af længde 560: % NR Løbende nummer 1..560 % ANTAL Antal køb foretaget af respondenten % MARS Antal køb af Mars bar foretaget af respondenten % PENCE Den gennemsnitlige købsstørrelse i pence % MPENCE Den gennemsnitlige størrelse af Mars-købene % RADIO Respondentens RADIO variabel % OTS'erne er ikke med i denne omgang, gennemsnitlige OTS'er % kan dannes tilsvarende (f.eks. som PENCE). del get opg2_01 % Fortløbende nummer 1..560 dannes var j 11246 j=1 exclude 1 j=j(#-1)+(resp(#)<>resp(#-1)) includeall % Visse variable omdøbes, for at bruge deres navne til korte variable rename pence pence_ rename radio radio_ % $mars bliver indikator for Mars-køb $mars=(maerke=1) % $mpence bliver beløb betalt for Mars (0 for andre mærker) $mpence=pence_*$mars % De nye variable erklæres var nr antal mars pence mpence radio 560 % nr skal bare være 1,2,..,560 nr=# % kommando-ekko slås fra, og tællevariabel nulstilles echo 0 $i=0 %LoopStart $i=$i+1 $j=j($i) pence($j)=pence_($i)+pence($j) mpence($j)=$mpence($i)+mpence($j) radio($j)=radio_($i) { hver gang, til overflod } mars($j)=$mars($i)+mars($j) antal($j)=antal($j)+1 goto %LoopStart $i