5

いくつかの変数名をループする「ネイティブ」SPSS の方法はありますか? 私がやりたいことは、(定義した) 変数のリストを取得し、それらに対して同じ手順を実行することだけです。

疑似コード- あまり良い例ではありませんが、要点はわかります...

for i in varlist['a','b','c']
do
  FREQUENCIES VARIABLES=varlist[i] / ORDER=ANALYSIS.
end

人々は R または Python SPSS プラグインを使用してこの基本的な配列機能を実現しているように見えることに気付きましたが、SPSS のインストールでそれらを構成できるようになるまでに (もしあったとしても) すぐにはわかりません。

SPSSには、これを行うためのネイティブな方法が必要です...そうですか?

4

7 に答える 7

7

変数をループするための2つの簡単な解決策があります(SPSSでPythonを使用する場合に比べて簡単です)。

1)DO REPEAT-END REPEAT

欠点は、主にデータ変換にのみ使用できることです。DO REPEAT-END REPEATたとえばCOMPUTERECODEなどです。頻度は許可されていません。例えば:

DO REPEAT R=REGION1 TO REGION5.
COMPUTE R=0.
END REPEAT.

2)DEFINE-!ENDDEFINE(マクロ施設)

マクロコマンドを使用して、変数のループで頻度を実行できます。例えば:

DEFINE macdef (!POS !CHAREND('/'))
!DO !i !IN (!1)
frequencies variables = !i.
!DOEND
!ENDDEFINE.

macdef VAR1 VAR2 VAR3  /.
于 2011-02-16T17:24:09.843 に答える
6

質問を正しく理解していれば、ループ構造を使用する必要はないかもしれません。FREQUENCIES などの VARIABLES サブコマンドを含む SPSS コマンドを使用すると、複数の変数を指定できます。

FREQUENCIES の基本的な構文は次のとおりです。

FREQUENCIES
    VARIABLES= varlist [varlist...] 

[varlist] は、単一の変数名、スペースで区切られた複数の変数名、TO キーワードで指定された連続する変数の範囲、キーワード ALL、または上記のオプションの組み合わせです。

例えば:

FREQUENCIES VARIABLES=VARA

FREQUENCIES VARIABLES=VARA VARB VARC

FREQUENCIES VARIABLES=VARA TO VARC     

FREQ VAR=ALL

FREQ VAR=VARA TO VARC VARM VARX TO VARZ

http://support.spss.com/ProductsExt/SPSS/Documentation/SPSSforWindows/index.htmで入手可能なSPSS Statistics 17.0 Command Syntax Referenceを参照してください。

SPSS を実際に使用してから何年も経っていることに注意してください。

于 2011-02-25T21:21:59.027 に答える
2

これらすべての頻度を 1 つのデータ パスで実行する方が効率的です。たとえば、 FREQUENCIES a to c. Python では、ループやその他の多くの制御フロー トリックを実行できます。

begin program.
import spss
for v in ['a','b','c']:
  spss.Submit("FREQUENCIES " + v)
end program.

Python を使用するには、SPSS Developer Central www.spss.com/devcentralから入手できる (無料の) Python プラグインをインストールする必要があります。

もちろん、この種のことにはマクロを使用できますが、こつをつかむと、Python ははるかに強力で簡単になります。

于 2010-09-03T22:39:21.940 に答える
1

はい、SPSS はこれを行うことができます。UCLAの人たちは、SPSSではなくPythonでそれを行う方法を知っているので、Pythonを使用しているようです。:)

変数を VARA、VARB、VARC と呼びましょう。それらは数値である必要があり (周波数を実行しているため)、spss データ ファイル内で連続している必要があります。次に、実際に「これがループしたい一連の変数です」というベクトルを作成します。

VECTOR VectorVar = VarA TO VarC.
LOOP #cnt = 1 to 3 by 1.
    FREQUENCIES VARIABLES=VectorVar(#cnt) / ORDER=ANALYSIS
ENDLOOP.
EXECUTE.

(上記は未確認です。ピリオドが抜けている箇所等があるかもしれません。)

于 2011-01-24T17:37:03.600 に答える
0

私はSPSSマクロをあまり使用していませんが、必要な場所に移動できる可能性がありますか?いくつかの例については、このサイトをチェックしてください。

http://spsstools.net/Macros.htm

また、SPSSDataManagementの本も役立つ場合があります。

最後に、メモリが機能する場合、問題はSPSS構文内でPythonを活用する方法の主な例でさえあると思います。私はPythonとSPSSを数回しか使用していませんが、必要に応じてその言語にアクセスできるようにしておくと非常に便利です。

HTH

于 2010-06-11T15:33:08.710 に答える
0

これは UCLA の Academic Technology Services のページで、変数のリストのループについて説明しています。見積もり、

「複数の変数をループしているため、Python を使用する必要があります。」

私の経験では、UCLA ATSはおそらく、すべての主要な統計計算システムを最もよくカバーしているサイトです。彼らがあなたに Python が必要だと言うなら... あなたはおそらく Python が必要です。

ええと...その人で申し訳ありませんが、別の統計システムに切り替える時が来たのかもしれません.

于 2010-05-21T21:54:30.867 に答える
-2

spss でこの stata sintxis を実行するにはどうすればよいですか。

foreach var of varlist  pob_multi pob_multimod pob_multiex vul_car vul_ing nopob_nov espacio carencias carencias_3 ic_rezedu ic_asalud ic_ss  ic_cv  ic_sbv ic_ali  pobex pob  {
    tabstat `var' [w=factor] if pob_multi!=., stats(mean) save
    matrix define `var'_pp =(r(StatTotal))
    matrix rownames `var'_pp = `var'_pp
}

matrix tabla1 = (pob_multi_pp \ pob_multimod_pp \ pob_multiex_pp \ vul_car_pp \ vul_ing_pp \ nopob_nov_pp \ espacio_pp \ carencias_pp \ carencias_3_pp \ espacio_pp \ ic_rezedu_pp\ ic_asalud_pp \ ic_ss_pp \ ic_cv_pp \ ic_sbv_pp\ ic_ali_pp \ espacio_pp \ pobex_pp \ pob_pp   )
matrix list tabla1

ありがとう。

于 2016-07-23T05:13:20.360 に答える