Hej, jag fick frågan hur man skapar slumptal och det är en enkel sak kommer ni snart se. Men i frågan ingick också att skapa 1000 nya individer med dessa slumptal, och där fick jag problem. Kanske någon känner till hur man via macron/loop-kommandot får till detta ?
Jag delar upp det här inlägget i 3 delar.
Del 1. Skapa 1000 nya cases
Del 2. Skapa slumptal
Del 3. Slumpa ut 2 grupper (testgrupp och kontrollgrupp)
Del 1: Skapa 1000 nya cases
Eftersom jag inte minns hur man gör detta med syntax (det ska gå) så gör jag på mitt "ful-sätt" men som ändå funkar: jag skapar dessa 1000 cases i Excel och läser in Excelfilen till SPSS. Anledningen till just Excel är för där kan man smidigt skriva in 1,2,3 i en kolumn och sen bara dra i nedre högra hörnet på de cellerna du just skrev in i , och dra sen musen rakt ner så fortsätter Excel att skriva ut en serie så långt du vill dvs fortsätter med 4,5,6,.....1000.
Alternativt: Syntaxen (om du föredrar att använda det) ser ut så här:
COMPUTE
rand = rv.uniform(0,1).
EXECUTE.
Del 3. Slumpa ut 2 grupper (testgrupp och kontrollgrupp)
Om du vill dela upp rand i två lika stora grupper så gör du så
här. Enklast är faktiskt att skriva i syntaxform på detta sätt (Rank-kommandot hittar du annars under Transform - Rank Cases):
RANK rand /
ntiles (2) INTO GRUPP.
EXECUTE.
VALUE LABELS GRUPP 1 'Kontrollgrupp' 2 'Testgrupp'.
Om det går att skapa 100 kolumner med 1000 slumptal i varje? Ja, inte för att riktigt begriper mig på detta med loopar, men med lite stölder från andra som kan det går det nog att få ihop. I nedanstående syntax skapas först två långa kolumner med antalet rader och antalet kolumner, följt av beräkning av slumptal i en tredje variabel. Efter detta stuvas materialet om så att det blir fler och kortare kolumner.
SvaraRadera/Robert
*Variabeln n anger hur antalet upprepningar/rader, variabeln kol anger antalet kolumner/variabler det blir i slutändan.
NEW FILE.
INPUT PROGRAM.
LOOP nr=1 TO 1000.
LEAVE nr.
LOOP kol=1 to 1000.
END CASE.
END LOOP.
END LOOP.
END FILE.
END INPUT PROGRAM.
DATASET NAME slumptal_enkel.
FORMATS nr kol(F6).
COMPUTE rn=RV.NORMAL(0,1).
DATASET ACTIVATE slumptal_enkel.
DATASET COPY slumptal_i_kolumner.
DATASET ACTIVATE slumptal_i_kolumner.
SORT CASES BY nr kol.
CASESTOVARS
/ID=nr
/INDEX=kol
/GROUPBY=VARIABLE.
Den här kommentaren har tagits bort av skribenten.
SvaraRadera