SPSS: вычислить переменную на основе COUNT различных значений - PullRequest
0 голосов
/ 11 марта 2020

Я упростил это для примера того, что я пытаюсь сделать. У меня есть 3 разные переменные со значениями от 1 до 5:

enter image description here

Мне нужно вычислить новую переменную, которая подсчитывает внешний вид каждого из значения во всех случаях и все 3 переменных. Цель состоит в том, чтобы показать, сколько раз каждое значение появляется (например, 5 появляется 3 раза), и мне сказали, что этого можно достичь с помощью метода переменной Compute, но я не смог выяснить, как это сделать.

Пример .sav-файла можно найти здесь , если это поможет. Заранее спасибо за ответы!

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Вы можете использовать al oop для создания 5 новых переменных, каждая из которых содержит количество вхождений определенного значения c в каждой строке. Затем, чтобы получить полное число, вы просто суммируете эти переменные:

do repeat vr=occ1 to occ5/vl=1 to 5.
   compute vr=sum(Mention1=vl, Mention2=vl, Mention3=vl).
end repeat.
exe.

Теперь у вас есть 5 новых переменных (например, var occ1 содержит количество вхождений числа 1 в каждой строке). Есть несколько способов получить полную сумму.
Чтобы просто получить ее в окне вывода:

descriptives occ1 to occ5/statistics=sum.

Но в своем вопросе вы упомянули добавление счетчиков к фактическому набору данных. Это можно сделать с помощью команды aggregate:

aggregate /out=* mode=addvariables /break= /TotOcc1 to TotOcc5=sum(occ1 to occ5).
0 голосов
/ 11 марта 2020

Я не смог получить доступ к вашему .sav-файлу с этого компьютера, но это решение, которое я нашел для ваших примеров:

*Dataset1 should equal your original dataset name.
DATASET ACTIVATE Dataset1.

*This creates a table with the counts of each occurance of 1 through 5.
FREQUENCIES VARS MENTION1 MENTION2 MENTION3.
EXECUTE.

*This translates the frequencies table to a dataset called 'freqtbl'.
DATASET DECLARE freqtbl.
OMS Select Tables
/IF SUBTYPES =['Frequencies']
/DESTINATION format = sav outfile=freqtbl.
freq vars= MENTION1 MENTION2 MENTION3.
OMSEND.

*This will make sure you are referencing the new dataset you created: 'freqtbl'.
*The ALTER TYPE statement turns VAR2, which is the occurances of 1 through 5, back into a numeric variable.
DATASET ACTIVATE freqtbl.
ALTER TYPE VAR2 (F1.0).

*This is a simple if/then statement across all of your values.
IF VAR2 = 1 FREQ_1 = SUM(FREQUENCY).
IF VAR2 = 2 FREQ_2 = SUM(FREQUENCY).
IF VAR2 = 3 FREQ_3 = SUM(FREQUENCY).
IF VAR2 = 4 FREQ_4 = SUM(FREQUENCY).
IF VAR2 = 5 FREQ_5 = SUM(FREQUENCY).
EXECUTE.

*This cleans up your dataset and computes a dummy variable to aggregate counts.
DELETE VARIABLES COMMAND_ TO CumulativePercent.
COMPUTE DUMMY = 1.
EXECUTE.

*This aggregates your frequency columns to count all occurances of 1 through 5.
AGGREGATE 
    /OUTFILE = *
    MODE = ADDVARIABLES
    /BREAK DUMMY
    /COUNT_1 = SUM(FREQ_1)
    /COUNT_2 = SUM(FREQ_2)
    /COUNT_3 = SUM(FREQ_3)
    /COUNT_4 = SUM(FREQ_4)
    /COUNT_5 = SUM(FREQ_5).
EXECUTE.
...