2017-08-01 2 views
1

J'ai un fichier de données SPSS22 (joint) et je veux le décomposer en 4 fichiers et les enregistrer séparément. J'ai maintenant la syntaxe SPSS et j'essaie d'utiliser le Python intégré dans SPSS pour créer une macro, donc la syntaxe sera plus courte.Comment créer une macro Python dans SPSS pour ajouter 1 aux noms de variables à chaque fois

enter image description here

Pour expliquer mon fichier SPSS un peu plus, il a quatre ensembles de variables, ce qui représente quatre postes vacants. Par exemple, le premier ensemble de variables se termine par "_1v", le deuxième ensemble de variables se termine par "_2v", et ainsi de suite. Maintenant, je veux ouvrir le fichier d'origine Télécharger 072617.sav, supprimer "_1v" à la fin du premier ensemble de variables, seulement conserver le premier ensemble de variables et les deux variables OrganizationNumber et VacantPositions, et enregistrez-le sous One Vacancy.sav. Ensuite, je veux aller au fichier original Télécharger à nouveau 072617.sav, supprimer "_2v" à la fin de la deuxième série de variables, ne conserver que le deuxième ensemble de variables et les deux variables OrganizationNumber et VacantPositions, et enregistrez-le comme Two Vacancies.sav .Nom pour les troisième et quatrième groupes de variables. J'ai inclus la syntaxe SPSS que j'ai écrite au bas de cette question.

Maintenant, pour créer une macro en utilisant le haut-Python, je suppose que je dois commencer par quelque chose comme:

import spss,spssaux 
def breakfiles(): 
    counter=1 
    for i in range(16): 
    spss.Submit(r""" 

Cependant, mes connaissances sur Python est trop limité pour écrire plus loin. Je pensais pouvoir joindre un fichier, mais d'une manière ou d'une autre, je ne pouvais joindre qu'une image.

SPSS Syntaxe:

une vacance

GET 
      FILE='I:\First Download 072617.sav'.  
    DATASET NAME Test WINDOS=FRONT. 
    RENAME VARIABLES (TenureTrack_1v NontenureTrack_1v NoTenureSystem_1v TenureOther_1v TenureOtherSpec_1v DoctoralDegree_1v MasterDocPreferred_1v MasterDegree_1v DegreeOther_1v DegreeOtherSpec_1v 
Prof_1v ProfOrAssoProf_1v AssoProf_1v AssoOrAssi_1v AssiProf_1v AssiProfOrInstr_1v Instr_1v RankOther_1v RankOtherSpec_1v withAdmin_1v NoAdmin_1v AdminOther_1v AdminOtherSpec_1v BacOnly_1v 
MasOnly_1v DocOnly_1v BacAndMas_1v BacAndDoc_1v MasAndDoc_1v BacMasDoc_1v NoTeachingLevel_1v TeachingLevelOther_1v TeachingLevelOtherSpec_1v DidacticOnly_1v ClinicalOnly_1v DidacticAndClinical_1v 
NoTeachingArea_1v TeachingAreaOther_1v TeachingAreaOtherSpec_1v GoToNextPage_1v = 
TenureTrack NontenureTrack NoTenureSystem TenureOther TenureOtherSpec DoctoralDegree MasterDocPreferred MasterDegree DegreeOther DegreeOtherSpec 
Prof ProfOrAssoProf AssoProf AssoOrAssi AssiProf AssiProfOrInstr Instr RankOther RankOtherSpec withAdmin NoAdmin AdminOther AdminOtherSpec BacOnly 
MasOnly DocOnly BacAndMas BacAndDoc MasAndDoc BacMasDoc NoTeachingLevel TeachingLevelOther TeachingLevelOtherSpec DidacticOnly ClinicalOnly DidacticAndClinical 
NoTeachingArea TeachingAreaOther TeachingAreaOtherSpec GoToNextPage). 
    FILTER OFF. 
    USE ALL. 
    SELECT IF (VacantPositions = 1). 
    EXECUTE. 
    SAVE OUTFILE='I:\One Vacancy.sav' 
    /KEEP= 
SchoolCo Organization Completer_Name Completer_Title Completer_Phone Completer_Email Completer_Address TenureTrack NontenureTrack NoTenureSystem TenureOther TenureOtherSpec DoctoralDegree 
MasterDocPreferred MasterDegree DegreeOther DegreeOtherSpec Prof ProfOrAssoProf AssoProf AssoOrAssi AssiProf AssiProfOrInstr Instr RankOther RankOtherSpec withAdmin NoAdmin AdminOther 
AdminOtherSpec BacOnly MasOnly DocOnly BacAndMas BacAndDoc MasAndDoc BacMasDoc NoTeachingLevel TeachingLevelOther TeachingLevelOtherSpec DidacticOnly ClinicalOnly DidacticAndClinical 
NoTeachingArea TeachingAreaOther TeachingAreaOtherSpec GoToNextPage 
    /COMPRESSED. 
    DATASET ACTIVATE DATASET20. 
    DATASET CLOSE Test. 

2 postes

GET 
     FILE='I:\First Download 072617.sav'. 
    DATASET NAME Test WINDOW=FRONT. 
    RENAME VARIABLES (TenureTrack_2v NontenureTrack_2v NoTenureSystem_2v TenureOther_2v TenureOtherSpec_2v DoctoralDegree_2v MasterDocPreferred_2v MasterDegree_2v DegreeOther_2v DegreeOtherSpec_2v 
Prof_2v ProfOrAssoProf_2v AssoProf_2v AssoOrAssi_2v AssiProf_2v AssiProfOrInstr_2v Instr_2v RankOther_2v RankOtherSpec_2v withAdmin_2v NoAdmin_2v AdminOther_2v AdminOtherSpec_2v BacOnly_2v 
MasOnly_2v DocOnly_2v BacAndMas_2v BacAndDoc_2v MasAndDoc_2v BacMasDoc_2v NoTeachingLevel_2v TeachingLevelOther_2v TeachingLevelOtherSpec_2v DidacticOnly_2v ClinicalOnly_2v DidacticAndClinical_2v 
NoTeachingArea_2v TeachingAreaOther_2v TeachingAreaOtherSpec_2v GoToNextPage_2v = 
TenureTrack NontenureTrack NoTenureSystem TenureOther TenureOtherSpec DoctoralDegree MasterDocPreferred MasterDegree DegreeOther DegreeOtherSpec 
Prof ProfOrAssoProf AssoProf AssoOrAssi AssiProf AssiProfOrInstr Instr RankOther RankOtherSpec withAdmin NoAdmin AdminOther AdminOtherSpec BacOnly 
MasOnly DocOnly BacAndMas BacAndDoc MasAndDoc BacMasDoc NoTeachingLevel TeachingLevelOther TeachingLevelOtherSpec DidacticOnly ClinicalOnly DidacticAndClinical 
NoTeachingArea TeachingAreaOther TeachingAreaOtherSpec GoToNextPage). 
    FILTER OFF. 
    USE ALL. 
    SELECT IF (VacantPositions = 2). 
    EXECUTE. 
    SAVE OUTFILE='I:\Two Vacancies.sav' 
    /KEEP= 
SchoolCo Organization Completer_Name Completer_Title Completer_Phone Completer_Email Completer_Address TenureTrack NontenureTrack NoTenureSystem TenureOther TenureOtherSpec DoctoralDegree 
MasterDocPreferred MasterDegree DegreeOther DegreeOtherSpec Prof ProfOrAssoProf AssoProf AssoOrAssi AssiProf AssiProfOrInstr Instr RankOther RankOtherSpec withAdmin NoAdmin AdminOther 
AdminOtherSpec BacOnly MasOnly DocOnly BacAndMas BacAndDoc MasAndDoc BacMasDoc NoTeachingLevel TeachingLevelOther TeachingLevelOtherSpec DidacticOnly ClinicalOnly DidacticAndClinical 
NoTeachingArea TeachingAreaOther TeachingAreaOtherSpec GoToNextPage 
    /COMPRESSED. 
    DATASET ACTIVATE DATASET20. 
    DATASET CLOSE Test. 

3 postes

GET 
     FILE='I:\First Download 072617.sav'. 
    DATASET NAME Test WINDOW=FRONT. 
    RENAME VARIABLES (TenureTrack_3v NontenureTrack_3v NoTenureSystem_3v TenureOther_3v TenureOtherSpec_3v DoctoralDegree_3v MasterDocPreferred_3v MasterDegree_3v DegreeOther_3v DegreeOtherSpec_3v 
Prof_3v ProfOrAssoProf_3v AssoProf_3v AssoOrAssi_3v AssiProf_3v AssiProfOrInstr_3v Instr_3v RankOther_3v RankOtherSpec_3v withAdmin_3v NoAdmin_3v AdminOther_3v AdminOtherSpec_3v BacOnly_3v 
MasOnly_3v DocOnly_3v BacAndMas_3v BacAndDoc_3v MasAndDoc_3v BacMasDoc_3v NoTeachingLevel_3v TeachingLevelOther_3v TeachingLevelOtherSpec_3v DidacticOnly_3v ClinicalOnly_3v DidacticAndClinical_3v 
NoTeachingArea_3v TeachingAreaOther_3v TeachingAreaOtherSpec_3v GoToNextPage_3v = 
TenureTrack NontenureTrack NoTenureSystem TenureOther TenureOtherSpec DoctoralDegree MasterDocPreferred MasterDegree DegreeOther DegreeOtherSpec 
Prof ProfOrAssoProf AssoProf AssoOrAssi AssiProf AssiProfOrInstr Instr RankOther RankOtherSpec withAdmin NoAdmin AdminOther AdminOtherSpec BacOnly 
MasOnly DocOnly BacAndMas BacAndDoc MasAndDoc BacMasDoc NoTeachingLevel TeachingLevelOther TeachingLevelOtherSpec DidacticOnly ClinicalOnly DidacticAndClinical 
NoTeachingArea TeachingAreaOther TeachingAreaOtherSpec GoToNextPage). 
    FILTER OFF. 
    USE ALL. 
    SELECT IF (VacantPositions = 3). 
    EXECUTE. 
    SAVE OUTFILE='I:\Three Vacancies.sav' 
    /KEEP= 
SchoolCo Organization Completer_Name Completer_Title Completer_Phone Completer_Email Completer_Address TenureTrack NontenureTrack NoTenureSystem TenureOther TenureOtherSpec DoctoralDegree 
MasterDocPreferred MasterDegree DegreeOther DegreeOtherSpec Prof ProfOrAssoProf AssoProf AssoOrAssi AssiProf AssiProfOrInstr Instr RankOther RankOtherSpec withAdmin NoAdmin AdminOther 
AdminOtherSpec BacOnly MasOnly DocOnly BacAndMas BacAndDoc MasAndDoc BacMasDoc NoTeachingLevel TeachingLevelOther TeachingLevelOtherSpec DidacticOnly ClinicalOnly DidacticAndClinical 
NoTeachingArea TeachingAreaOther TeachingAreaOtherSpec GoToNextPage 
    /COMPRESSED. 
    DATASET ACTIVATE DATASET20. 
    DATASET CLOSE Test. 

4 postes à pourvoir

GET 
     FILE='I:\First Download 072617.sav'. 
    DATASET NAME Test WINDOW=FRONT. 
    RENAME VARIABLES (TenureTrack_4v NontenureTrack_4v NoTenureSystem_4v TenureOther_4v TenureOtherSpec_4v DoctoralDegree_4v MasterDocPreferred_4v MasterDegree_4v DegreeOther_4v DegreeOtherSpec_4v 
Prof_4v ProfOrAssoProf_4v AssoProf_4v AssoOrAssi_4v AssiProf_4v AssiProfOrInstr_4v Instr_4v RankOther_4v RankOtherSpec_4v withAdmin_4v NoAdmin_4v AdminOther_4v AdminOtherSpec_4v BacOnly_4v 
MasOnly_4v DocOnly_4v BacAndMas_4v BacAndDoc_4v MasAndDoc_4v BacMasDoc_4v NoTeachingLevel_4v TeachingLevelOther_4v TeachingLevelOtherSpec_4v DidacticOnly_4v ClinicalOnly_4v DidacticAndClinical_4v 
NoTeachingArea_4v TeachingAreaOther_4v TeachingAreaOtherSpec_4v GoToNextPage_4v = 
TenureTrack NontenureTrack NoTenureSystem TenureOther TenureOtherSpec DoctoralDegree MasterDocPreferred MasterDegree DegreeOther DegreeOtherSpec 
Prof ProfOrAssoProf AssoProf AssoOrAssi AssiProf AssiProfOrInstr Instr RankOther RankOtherSpec withAdmin NoAdmin AdminOther AdminOtherSpec BacOnly 
MasOnly DocOnly BacAndMas BacAndDoc MasAndDoc BacMasDoc NoTeachingLevel TeachingLevelOther TeachingLevelOtherSpec DidacticOnly ClinicalOnly DidacticAndClinical 
NoTeachingArea TeachingAreaOther TeachingAreaOtherSpec GoToNextPage). 
    FILTER OFF. 
    USE ALL. 
    SELECT IF (VacantPositions = 4). 
    EXECUTE. 
    SAVE OUTFILE='I:\Three Vacancies.sav' 
    /KEEP= 
SchoolCo Organization Completer_Name Completer_Title Completer_Phone Completer_Email Completer_Address TenureTrack NontenureTrack NoTenureSystem TenureOther TenureOtherSpec DoctoralDegree 
MasterDocPreferred MasterDegree DegreeOther DegreeOtherSpec Prof ProfOrAssoProf AssoProf AssoOrAssi AssiProf AssiProfOrInstr Instr RankOther RankOtherSpec withAdmin NoAdmin AdminOther 
AdminOtherSpec BacOnly MasOnly DocOnly BacAndMas BacAndDoc MasAndDoc BacMasDoc NoTeachingLevel TeachingLevelOther TeachingLevelOtherSpec DidacticOnly ClinicalOnly DidacticAndClinical 
NoTeachingArea TeachingAreaOther TeachingAreaOtherSpec GoToNextPage 
    /COMPRESSED. 
    DATASET ACTIVATE DATASET20. 
    DATASET CLOSE Test. 

`

+0

notez que votre nom de famille est "Trois postes vacants" au lieu de "quatre" –

+0

Vous avez raison! Je vous remercie de le faire remarquer. Je vais devoir le réparer et laissez-moi essayer de comprendre comment. – user6655908

Répondre

0

vous avez écrit une petite macro (macro SPSS, pas python) qui devrait raccourcir considérablement le travail:

define DoList (nv=!tokens(1) !default("")) 
!do !vrnm !in ("TenureTrack NontenureTrack NoTenureSystem TenureOther [continue with the rest of your variables here]") 
!if (!nv<>"") !then !concat(!vrnm,"_",!nv,"v") !else !vrnm !ifend 
!doend 
!enddefine. 

après l'exécution de définition de macro vous pouvez l'utiliser de cette façon:

GET FILE='I:\First Download 072617.sav'. 
RENAME VARIABLES (DoList nv=1 = DoList). 
SELECT IF (VacantPositions = 1). 
SAVE OUTFILE='I:\one Vacancy.sav' /KEEP= DoList /COMPRESSED. 

GET FILE='I:\First Download 072617.sav'. 
RENAME VARIABLES (DoList nv=2 = DoList). 
SELECT IF (VacantPositions = 2). 
SAVE OUTFILE='I:\two Vacancies.sav' /KEEP= DoList /COMPRESSED. 

et ainsi de suite.

Je voudrais également examiner la restructuration des données avec varstocases - cela pourrait vous aider à un bon point de départ (peut-être vous pouvez travailler sur vos données dans un fichier une fois qu'il est mieux organisé, si vous voulez toujours séparer les fichiers, c'est beaucoup plus facile à partir d'ici).

+0

Merci beaucoup! J'apprécie vraiment cela!! – user6655908