Syntax to generate a Syntax in SPSS

classic Classic list List threaded Threaded
3 messages Options
Tui
Reply | Threaded
Open this post in threaded view
|

Syntax to generate a Syntax in SPSS

Tui
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
Reply | Threaded
Open this post in threaded view
|

Re: Syntax to generate a Syntax in SPSS

Jon Peck
You could use Python any platform for this.  I think something must be very wrong if you are generating 15mb of syntax.

You might want to check out the STATS VALLBLS FROMDATA extension command, which can be installed from the Extensions > Extension Hub menu.
"Create value labels for a set of variables using values of other variables for the labels"

Beyond that, it would need digging further into the details to give you more advice.


On Tue, May 11, 2021 at 9:57 AM Tui <[hidden email]> 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


--
Jon K Peck
[hidden email]

===================== 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
Reply | Threaded
Open this post in threaded view
|

Re: Syntax to generate a Syntax in SPSS

hillel vardi
In reply to this post by Tui

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