Re: Syntax to generate a Syntax in SPSS

Posted by hillel vardi on
URL: http://spssx-discussion.165.s1.nabble.com/Syntax-to-generate-a-Syntax-in-SPSS-tp5740519p5740522.html

Shalom

If I Understand you correctly there are 2 excel lists 1 variable  2 value labels .

you can build them like this

list 1 the variables

var_name  var_Code var_Label 
V1 3 Sex 1 
V2 1 Work 
V3 3 Country 

list 2 the values

Var_name  value_Code value_Label

V1 1 “Male”
V1 2 “Female”
V2 1 “Yes”
V2 2 “No”
V3 1 “Europe”
V3 2 “America”
V3 3 “Asia”
V3 4 “Africa”
V3 5 “Oceania”


* read them and match the two lists one(variable) to many (value )  .

match files table=  list1 / file= list2 / by var_name .

WRITE OUTFILE = "var_values" /'value labels    ' Var_name value_Code value_Label .

Hillel Vardi
 

On 11/05/2021 18:57, Tui wrote:
Hello!
I’m trying to construct a Syntax to generate a Syntax in SPSS, but I’m
having some issues…
I have an excel file with metadata and I would like to use it in order to
make a syntax to extract information from it (like this, if I have a huge
database, I just need to keep the excel updated – add/delete variables, etc.
- and then run a syntax to extract the needed information for a new syntax).
I also noticed the produced syntax has always around 15Mb, which is a lot
(applied to more than 500 lines)!
I don’t use Python due to run syntax in different computers and/or
configurations.
Any ideas? Can anyone please help me?
Thank you in advance.

Example:
(test.xlsx – sheet 1)
Var Code Label  Label List Var_label (concatenate Var+Label)
V1 3 Sex 1 V1 “Sex”
V2 1 Work 2 V2 “Work”
V3 3 Country 3 V3 “Country”
V4 1 Married 2 V4 “Married”
V5 1 Kids 2 V5 “Kids”
V6 2 Satisf1 4 V6 “Satisf1”
V7 2 Satisf2 4 V7 “Satisf2”

(information from another file)
List = 1
1 “Male”
2 “Female”
List = 2
1 “Yes”
2 “No”
List = 3
1 “Europe”
2 “America”
3 “Asia”
4 “Africa”
5 “Oceania”
List = 4
1 “Very unsatisfied”
10 “Very satisfied”




I want to make a Syntax that generates a new syntax to apply “VARIABLE
LABELS” and “VALUE LABELS”. So, I thought about something like this:
GET DATA
/TYPE=XLSX
/FILE="test.xlsx"
/SHEET=name 'sheet 1'
/CELLRANGE=FULL
/READNAMES=ON
/DATATYPEMIN PERCENTAGE=95.0.
EXECUTE.

STRING vlb (A15) labels (A150) value (A12) lab (A1500) point (A2) separate
(A50) space (A2) list1 (A100) list2 (A100).

SELECT IF (Code=1).
COMPUTE vlb = "VARIABLE LABELS".
COMPUTE labels = CONCAT (RTRIM(Var_label)," ").
COMPUTE point = ".".
COMPUTE value = "VALUE LABELS".
COMPUTE lab = CONCAT (RTRIM(Var)," ").
COMPUTE list1 = '1 " Yes "'.
COMPUTE list2 = '2 "No".'.
COMPUTE space = " ".
COMPUTE separate="************************************************.".

WRITE OUTFILE = "list_01.sps" / vlb.
WRITE OUTFILE = "list_01.sps" /labels.
WRITE OUTFILE = "list_01.sps" /point.
WRITE OUTFILE = "list_01.sps" /value.
WRITE OUTFILE = "list_01.sps" /lab.
WRITE OUTFILE = "list_01.sps" /list1.
WRITE OUTFILE = "list_01.sps" /list2.
WRITE OUTFILE = "list_01.sps" /space.
WRITE OUTFILE = "list_01.sps" /separate.
WRITE OUTFILE = "list_01.sps" /space.

If there is only one variable with same list (ex: V1), it works ok. However,
if there is more than one variable having the same list, it reproduces the
codes as much times as number of variables (Ex: V2, V4 and V5).

What I have (Ex: V2, V4 and V5), after running code above:

VARIABLE LABELS
V2 "Work"
.
VALUE LABELS
V2
1 " Yes "
2 " No "
************************************************.
VARIABLE LABELS
V4 "Married"
.
VALUE LABELS
V4
1 " Yes "
2 " No "
************************************************.
VARIABLE LABELS
V5 "Kids"
.
VALUE LABELS
V5
1 " Yes "
2 " No "
************************************************.


What I would like to have:

VARIABLE LABELS
V2 "Work"
V4 "Married"
V5 "Kids"
.
VALUE LABELS
V2 V4 V5
1 " Yes "
2 " No "




--
Sent from: http://spssx-discussion.1045642.n5.nabble.com/

=====================
To manage your subscription to SPSSX-L, send a message to
[hidden email] (not to SPSSX-L), with no body text except the
command. To leave the list, send the command
SIGNOFF SPSSX-L
For a list of commands to manage subscriptions, send the command
INFO REFCARD
===================== To manage your subscription to SPSSX-L, send a message to [hidden email] (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD