<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho una colonna che contiene risposte aperte a una domanda del sondaggio. Mi piacerebbe creare una tabella di frequenza di tutte le coppie di parole adiacenti che appaiono nella colonna.
Conosco la "analisi categoriale" che crea una tabella di frequenza delle singole parole. Sospetto che come parte del processo di creazione della tabella delle frequenze, il processo crei anche una tabella di tutte le singole parole: una parola per riga. Se potessi creare questa tabella, potrei semplicemente unirmi alla tabella e compensare il join di 1 record. Qualche idea su come creare un tavolo con le singole parole trasposte?
Ecco alcune starter JSL; ti consigliamo di rielaborarlo un po 'per soddisfare le tue esigenze. Usa un array associativo per contare le frequenze delle coppie di parole adiacenti. Presuppone che non si desidera creare una coppia dalla fine di una riga all'inizio della successiva (tra le altre ipotesi).
dt = New Table( "survey results",
New Column( "answers", Character, "Nominal",
Set Values(
{"this is a test; a test to see if this is going to see the light of day",
"another time, or another day, or another time-this is a test",
"duplicate. duplicate, double-double double single-this is a test"}
)
)
);
frequency = [=> 0]; // associative array that answers "Zero!" for non-existing key
For Each Row(
listOfWords = Words( Uppercase( dt:answers ), " ,-.;?_" );
For( i = 1, i < N Items( listOfWords ), i++,
frequency[listOfWords || "_" || listOfWords[i + 1]]++;
);
);
show(frequency);
frequency = ["A_TEST" => 4, "ANOTHER_DAY" => 1, "ANOTHER_TIME" => 2, "DAY_OR" => 1, "DOUBLE_DOUBLE" => 2, "DOUBLE_SINGLE" => 1, "DUPLICATE_DOUBLE" => 1, "DUPLICATE_DUPLICATE" => 1, "GOING_TO" => 1, "IF_THIS" => 1, "IS_A" => 3, "IS_GOING" => 1, "LIGHT_OF" => 1, "OF_DAY" => 1 , "OR_ANOTHER" => 2, "SEE_IF" => 1, "SEE_THE" => 1, "SINGLE_THIS" => 1, "TEST_A" => 1, "TEST_TO" => 1, "THE_LIGHT" => 1, "THIS_IS" => 4, "TIME_OR" => 1, "TIME_THIS" => 1, "TO_SEE" => 2, => 0];