How to calculate missing values in a string with multiple responses and semi-colons

classic Classic list List threaded Threaded
30 messages Options
12
Reply | Threaded
Open this post in threaded view
|

How to calculate missing values in a string with multiple responses and semi-colons

huang jialin
Hello,

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2
2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

How can I got the number of missing items? 

I would appreciate your helps. 

Sincerely,
Jialin

Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

Maguin, Eugene

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

 

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

 

 

 

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent: Monday, November 28, 2011 12:23 PM
To: [hidden email]
Subject: How to calculate missing values in a string with multiple responses and semi-colons

 

Hello,

 

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

 

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

 

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

 

How can I got the number of missing items? 

 

I would appreciate your helps. 

 

Sincerely,

Jialin

 

Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

huang jialin
Hi Gene,

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

Thank you very much.

Sincerely,
Jialin


On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <[hidden email]> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

 

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

 

 

 

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent: Monday, November 28, 2011 12:23 PM
To: [hidden email]
Subject: How to calculate missing values in a string with multiple responses and semi-colons

 

Hello,

 

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

 

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

 

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

 

How can I got the number of missing items? 

 

I would appreciate your helps. 

 

Sincerely,

Jialin

 


Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

Maguin, Eugene

Ok, I missed accounting for the situation where the first item is missing. This will do that.

 

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1. 

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

 

 

 

From: huang jialin [mailto:[hidden email]]
Sent: Monday, November 28, 2011 12:54 PM
To: Gene Maguin
Cc: [hidden email]
Subject: Re: How to calculate missing values in a string with multiple responses and semi-colons

 

Hi Gene,

 

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

 

Thank you very much.

 

Sincerely,

Jialin

 

 

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <[hidden email]> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

 

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

 

 

 

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent: Monday, November 28, 2011 12:23 PM
To: [hidden email]
Subject: How to calculate missing values in a string with multiple responses and semi-colons

 

Hello,

 

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

 

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

 

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

 

How can I got the number of missing items? 

 

I would appreciate your helps. 

 

Sincerely,

Jialin

 

 

Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

huang jialin
Hi Gene,

Thanks for your quick response. I will rephrase my question. That is, I only want to count the missing values before the last integer. Am I making sense now?

Sorry for the confusion.

Sincerely,
Jialin 

On Mon, Nov 28, 2011 at 12:08 PM, Gene Maguin <[hidden email]> wrote:

Ok, I missed accounting for the situation where the first item is missing. This will do that.

 

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1. 

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

 

 

 

From: huang jialin [mailto:[hidden email]]
Sent: Monday, November 28, 2011 12:54 PM
To: Gene Maguin
Cc: [hidden email]
Subject: Re: How to calculate missing values in a string with multiple responses and semi-colons

 

Hi Gene,

 

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

 

Thank you very much.

 

Sincerely,

Jialin

 

 

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <[hidden email]> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

 

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

 

 

 

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent: Monday, November 28, 2011 12:23 PM
To: [hidden email]
Subject: How to calculate missing values in a string with multiple responses and semi-colons

 

Hello,

 

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

 

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

 

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

 

How can I got the number of missing items? 

 

I would appreciate your helps. 

 

Sincerely,

Jialin

 

 


Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

Art Kendall
In reply to this post by huang jialin

If you have that data as a disk file you can do something like the syntax below which was generated by <file> <read text data>.

If you have it as one long string variable, you could parse that string with syntax, or you could write it to a disk file.� You would want to include a case identifier when you write to a .txt file so that you can use that in double checking, matching, etc.

If you want to parse a long string you could do something like this. � Copy the string into a working string. Use a loop� to find what precedes a semicolon, use that as a variable,� if it is null put in a user missing value, replace the working string with itself starting with the character after the semicolon
The working string keeps getting shorter and shorter.� You may have to specifically handle null contents for v1 and v50.


Art Kendall
Social Research Consultants


GET DATA
� /TYPE=TXT
� /FILE="C:\project\semisparated.txt"
� /DELCASE=LINE
� /DELIMITERS=";"
� /ARRANGEMENT=DELIMITED
� /FIRSTCASE=1
� /IMPORTCASE=ALL
� /VARIABLES=
� V1 F1.0
� V2 F1.0
� V3 F1.0
� V4 F1.0
� V5 F1.0
� V6 F1.0
� V7 F3.0
� V8 F1.0
� V9 F1.0
� V10 F1.0
� V11 F3.0
� V12 F1.0
� V13 F1.0
� V14 F1.0
� V15 F3.0
� V16 F3.0
� V17 F1.0
� V18 F1.0
� V19 F3.0
� V20 F3.0
� V21 F1.0
� V22 F1.0
� V23 F3.0
� V24 F1.0
� V25 F1.0
� V26 F1.0
� V27 F3.0
� V28 F1.0
� V29 F1.0
� V30 F1.0
� V31 F1.0
� V32 F1.0
� V33 F1.0
� V34 F3.0
� V35 F1.0
� V36 F1.0
� V37 F3.0
� V38 F1.0
� V39 F1.0
� V40 F1.0
� V41 F3.0
� V42 F1.0
� V43 F3.0
� V44 F1.0
� V45 F1.0
� V46 F3.0
� V47 F3.0
� V48 F1.0
� V49 F1.0
� V50 F1.0.
CACHE.
compute here = nvalid(v1 to v50).
count nothere = v1 to v50(SYSMIS, MISSING).
formats here nothere (f2).
frequencies variables = here nothere.


On 11/28/2011 12:23 PM, huang jialin wrote:
Hello,

I have a variable in a dataset� formatted� as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2
2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

There is 50 items in total, and� they are� separated� by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the� responses� stopped.

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

How can I got the number of missing items?�

I would appreciate your helps.�

Sincerely,
Jialin

===================== 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
Art Kendall
Social Research Consultants
Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

Art Kendall
In reply to this post by huang jialin
Are saying that there should be a specific number of digits in each field? I.e, that there are supposed to be 50 3-digit numbers.
blank blank 1 has two user missing values?
blank 1 1 has one user missing value
but
blank blank blank has a different user missing value

Is this a one-time analysis, or is this something you want to use in a production context?

Art Kendall
Social Research Consultants

On 11/28/2011 1:15 PM, huang jialin wrote:
Hi Gene,

Thanks for your quick response. I will rephrase my question. That is, I only want to count the missing values before the last integer. Am I making sense now?

Sorry for the confusion.

Sincerely,
Jialin�

On Mon, Nov 28, 2011 at 12:08 PM, Gene Maguin <[hidden email]> wrote:

Ok, I missed accounting for the situation where the first item is missing. This will do that.

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1.�

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+� compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘� ‘).

+� break.

End if.

End loop.

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

From: huang jialin [mailto:[hidden email]]
Sent: Monday, November 28, 2011 12:54 PM
To: Gene Maguin
Cc: [hidden email]
Subject: Re: How to calculate missing values in a string with multiple responses and semi-colons

Hi Gene,

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

Thank you very much.

Sincerely,

Jialin

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <[hidden email]> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+� compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘� ‘).

+� break.

End if.

End loop.

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent: Monday, November 28, 2011 12:23 PM
To: [hidden email]
Subject: How to calculate missing values in a string with multiple responses and semi-colons

Hello,

I have a variable in a dataset� formatted� as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

There is 50 items in total, and� they are� separated� by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the� responses� stopped.

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

How can I got the number of missing items?�

I would appreciate your helps.�

Sincerely,

Jialin


===================== 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
Art Kendall
Social Research Consultants
Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

Rick Oliver-3
In reply to this post by huang jialin
Rick Oliver
Senior Information Developer
IBM Business Analytics (SPSS)
E-mail: [hidden email]


****sample data***.
data list list /stringvar (a120).
begin data
1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2
2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;
end data.
write outfile='c:\temp\temp.txt' /stringvar.
execute.
***real code starts here. just read the original text data file this way***.
data list list (";")  file='c:\temp\temp.txt' /numvar1 to numvar50.
compute numvalid=nvalid(numvar1 to numvar50).
execute.



From:        huang jialin <[hidden email]>
To:        [hidden email]
Date:        11/28/2011 12:19 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons
Sent by:        "SPSSX(r) Discussion" <[hidden email]>




Hi Gene,

Thanks for your quick response. I will rephrase my question. That is, I only want to count the missing values before the last integer. Am I making sense now?

Sorry for the confusion.

Sincerely,
Jialin 

On Mon, Nov 28, 2011 at 12:08 PM, Gene Maguin <emaguin@...> wrote:
Ok, I missed accounting for the situation where the first item is missing. This will do that.

 

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1. 

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

 

 

 

From: huang jialin [mailto:huangpsych@...]
Sent:
Monday, November 28, 2011 12:54 PM
To:
Gene Maguin
Cc:
[hidden email]
Subject:
Re: How to calculate missing values in a string with multiple responses and semi-colons

 

Hi Gene,

 

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

 

Thank you very much.

 

Sincerely,

Jialin

 

 

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <emaguin@...> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

 

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

 

 

 

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent:
Monday, November 28, 2011 12:23 PM
To:
[hidden email]
Subject:
How to calculate missing values in a string with multiple responses and semi-colons

 

Hello,

 

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

 

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

 

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

 

How can I got the number of missing items? 

 

I would appreciate your helps. 

 

Sincerely,

Jialin

 

 

Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

Art Kendall
In reply to this post by huang jialin
Or are you saying that you do not want to count trailing missing values?
I.e; up to some point there is one kind of user missing, after the last valid value within a case, you want a different kind of user missing value.
E.g., the first kind might mean read but not answered and the second kind might mean stopped reading so that there is no answer.

Art Kendall
Social Research Consultants


On 11/28/2011 1:15 PM, huang jialin wrote:
Hi Gene,

Thanks for your quick response. I will rephrase my question. That is, I only want to count the missing values before the last integer. Am I making sense now?

Sorry for the confusion.

Sincerely,
Jialin�

On Mon, Nov 28, 2011 at 12:08 PM, Gene Maguin <[hidden email]> wrote:

Ok, I missed accounting for the situation where the first item is missing. This will do that.

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1.�

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+� compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘� ‘).

+� break.

End if.

End loop.

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

From: huang jialin [mailto:[hidden email]]
Sent: Monday, November 28, 2011 12:54 PM
To: Gene Maguin
Cc: [hidden email]
Subject: Re: How to calculate missing values in a string with multiple responses and semi-colons

Hi Gene,

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

Thank you very much.

Sincerely,

Jialin

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <[hidden email]> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+� compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘� ‘).

+� break.

End if.

End loop.

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent: Monday, November 28, 2011 12:23 PM
To: [hidden email]
Subject: How to calculate missing values in a string with multiple responses and semi-colons

Hello,

I have a variable in a dataset� formatted� as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

There is 50 items in total, and� they are� separated� by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the� responses� stopped.

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

How can I got the number of missing items?�

I would appreciate your helps.�

Sincerely,

Jialin


===================== 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
Art Kendall
Social Research Consultants
Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

huang jialin
Art,

Thanks for your email. I think you are right. I do not want to count trailing missing values.

Thanks.

Sincerely,
Jialin

On Mon, Nov 28, 2011 at 12:57 PM, Art Kendall <[hidden email]> wrote:
Or are you saying that you do not want to count trailing missing values?
I.e; up to some point there is one kind of user missing, after the last valid value within a case, you want a different kind of user missing value.
E.g., the first kind might mean read but not answered and the second kind might mean stopped reading so that there is no answer.


Art Kendall
Social Research Consultants


On 11/28/2011 1:15 PM, huang jialin wrote:
Hi Gene,

Thanks for your quick response. I will rephrase my question. That is, I only want to count the missing values before the last integer. Am I making sense now?

Sorry for the confusion.

Sincerely,
Jialin 

On Mon, Nov 28, 2011 at 12:08 PM, Gene Maguin <[hidden email]> wrote:

Ok, I missed accounting for the situation where the first item is missing. This will do that.

 

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1. 

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

 

 

 

From: huang jialin [mailto:[hidden email]]
Sent: Monday, November 28, 2011 12:54 PM
To: Gene Maguin
Cc: [hidden email]
Subject: Re: How to calculate missing values in a string with multiple responses and semi-colons

 

Hi Gene,

 

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

 

Thank you very much.

 

Sincerely,

Jialin

 

 

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <[hidden email]> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

 

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

 

 

 

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent: Monday, November 28, 2011 12:23 PM
To: [hidden email]
Subject: How to calculate missing values in a string with multiple responses and semi-colons

 

Hello,

 

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

 

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

 

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

 

How can I got the number of missing items? 

 

I would appreciate your helps. 

 

Sincerely,

Jialin

 

 



Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

huang jialin
In reply to this post by Rick Oliver-3
Hi Rick,

Thanks for your response. It is similar to Art's solution. But can I make some modification so that it can remove the trailing missing values?

Thanks.

Sincerely,
Jialin


On Mon, Nov 28, 2011 at 12:53 PM, Rick Oliver <[hidden email]> wrote:
Rick Oliver
Senior Information Developer
IBM Business Analytics (SPSS)
E-mail: [hidden email]


****sample data***.
data list list /stringvar (a120).
begin data
1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2
2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;
end data.
write outfile='c:\temp\temp.txt' /stringvar.
execute.
***real code starts here. just read the original text data file this way***.
data list list (";")  file='c:\temp\temp.txt' /numvar1 to numvar50.
compute numvalid=nvalid(numvar1 to numvar50).
execute.



From:        huang jialin <[hidden email]>
To:        [hidden email]
Date:        11/28/2011 12:19 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons
Sent by:        "SPSSX(r) Discussion" <[hidden email]>




Hi Gene,

Thanks for your quick response. I will rephrase my question. That is, I only want to count the missing values before the last integer. Am I making sense now?

Sorry for the confusion.

Sincerely,
Jialin 

On Mon, Nov 28, 2011 at 12:08 PM, Gene Maguin <[hidden email]> wrote:
Ok, I missed accounting for the situation where the first item is missing. This will do that.

 

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1. 

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

 

 

 

From: huang jialin [mailto:[hidden email]]
Sent:
Monday, November 28, 2011 12:54 PM
To:
Gene Maguin
Cc:
[hidden email]
Subject:
Re: How to calculate missing values in a string with multiple responses and semi-colons

 

Hi Gene,

 

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

 

Thank you very much.

 

Sincerely,

Jialin

 

 

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <[hidden email]> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

 

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

 

 

 

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent:
Monday, November 28, 2011 12:23 PM
To:
[hidden email]
Subject:
How to calculate missing values in a string with multiple responses and semi-colons

 

Hello,

 

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

 

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

 

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

 

How can I got the number of missing items? 

 

I would appreciate your helps. 

 

Sincerely,

Jialin

 

 


Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

Rick Oliver-3
In reply to this post by huang jialin
Oops. That's not right. never mind.

Rick Oliver
Senior Information Developer
IBM Business Analytics (SPSS)
E-mail: [hidden email]




From:        Rick Oliver/Chicago/IBM
To:        huang jialin <[hidden email]>
Cc:        [hidden email]
Date:        11/28/2011 12:53 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons



Rick Oliver
Senior Information Developer
IBM Business Analytics (SPSS)
E-mail: [hidden email]


****sample data***.
data list list /stringvar (a120).
begin data
1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2
2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;
end data.
write outfile='c:\temp\temp.txt' /stringvar.
execute.
***real code starts here. just read the original text data file this way***.
data list list (";")  file='c:\temp\temp.txt' /numvar1 to numvar50.
compute numvalid=nvalid(numvar1 to numvar50).
execute.




From:        huang jialin <[hidden email]>
To:        [hidden email]
Date:        11/28/2011 12:19 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons
Sent by:        "SPSSX(r) Discussion" <[hidden email]>




Hi Gene,

Thanks for your quick response. I will rephrase my question. That is, I only want to count the missing values before the last integer. Am I making sense now?

Sorry for the confusion.

Sincerely,
Jialin 

On Mon, Nov 28, 2011 at 12:08 PM, Gene Maguin <emaguin@...> wrote:
Ok, I missed accounting for the situation where the first item is missing. This will do that.

 

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1. 

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

 

 

 

From: huang jialin [mailto:huangpsych@...]
Sent:
Monday, November 28, 2011 12:54 PM
To:
Gene Maguin
Cc:
[hidden email]
Subject:
Re: How to calculate missing values in a string with multiple responses and semi-colons

 

Hi Gene,

 

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

 

Thank you very much.

 

Sincerely,

Jialin

 

 

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <emaguin@...> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

 

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

 

 

 

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent:
Monday, November 28, 2011 12:23 PM
To:
[hidden email]
Subject:
How to calculate missing values in a string with multiple responses and semi-colons

 

Hello,

 

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

 

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

 

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

 

How can I got the number of missing items? 

 

I would appreciate your helps. 

 

Sincerely,

Jialin

 

 

Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

Art Kendall
In reply to this post by Rick Oliver-3
Nice one.� I forgot that one can specify the delimiter. I can see how to use semicolon, comma, pipe or most likely any printing character,
is there a way to specify a tab (ctrl-h in ASCII)?


Lo and behold!!
this works even with 2 specified separators this syntax if for� tilda and x� � but x and X works too.

new file.
set blanks 0.
data list list ("~","x")� file='c:\project\tilda x separated.txt' /numvar1 to numvar3.
compute numvalid=nvalid(numvar1 to numvar3).
compute ID = $casenum.
list /variables = ID numvar1 to numvar3.
-----
the data
-----
123x456x789
xxx
123x456x789
123xx
123~456~789
~~~
123~456x789
123~x

Art Kendall
Social Research Consultants


On 11/28/2011 1:53 PM, Rick Oliver wrote:
Rick Oliver
Senior Information Developer
IBM Business Analytics (SPSS)
E-mail: [hidden email]


****sample data***.
data list list /stringvar (a120).
begin data
1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2
2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;
end data.
write outfile='c:\temp\temp.txt' /stringvar.
execute.
***real code starts here. just read the original text data file this way***.
data list list (";") � file='c:\temp\temp.txt' /numvar1 to numvar50.
compute numvalid=nvalid(numvar1 to numvar50).
execute.



From: � � � � huang jialin [hidden email]
To: � � � � [hidden email]
Date: � � � � 11/28/2011 12:19 PM
Subject: � � � � Re: How to calculate missing values in a string with multiple � � � � � � � responses and semi-colons
Sent by: � � � � "SPSSX(r) Discussion" [hidden email]




Hi Gene,

Thanks for your quick response. I will rephrase my question. That is, I only want to count the missing values before the last integer. Am I making sense now?

Sorry for the confusion.

Sincerely,
Jialin�

On Mon, Nov 28, 2011 at 12:08 PM, Gene Maguin <[hidden email]> wrote:
Ok, I missed accounting for the situation where the first item is missing. This will do that.

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1.�

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+� compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘� ‘).

+� break.

End if.

End loop.

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

From: huang jialin [mailto:[hidden email]]
Sent:
Monday, November 28, 2011 12:54 PM
To:
Gene Maguin
Cc:
[hidden email]
Subject:
Re: How to calculate missing values in a string with multiple responses and semi-colons

Hi Gene,

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

Thank you very much.

Sincerely,

Jialin

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <[hidden email]> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+� compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘� ‘).

+� break.

End if.

End loop.

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent:
Monday, November 28, 2011 12:23 PM
To:
[hidden email]
Subject:
How to calculate missing values in a string with multiple responses and semi-colons

Hello,

I have a variable in a dataset� formatted� as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

There is 50 items in total, and� they are� separated� by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the� responses� stopped.

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

How can I got the number of missing items?�

I would appreciate your helps.�

Sincerely,

Jialin

===================== 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
Art Kendall
Social Research Consultants
Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

Maguin, Eugene
In reply to this post by huang jialin

Ok, now I understand. So the problem is to find the last numeric value and search the string prior to that position for paired semicolons or a semicolon in position 1. So:

String #v(a150).

Compute #v=rtrim(V,’;’).

Compute nmissing=0.

If (substr(#V,1,1) eq ‘;’) nmissing=nmissing+1. 

Compute #j=char.length(#v).

Loop #i=1 to #j.

If (substr(#V,#i,2) eq ‘;;’) nmissing=nmissing+1.

End loop.

 

Try this out and let me know.

 

Gene Maguin

 

From: huang jialin [mailto:[hidden email]]
Sent: Monday, November 28, 2011 1:15 PM
To: Gene Maguin
Cc: [hidden email]
Subject: Re: How to calculate missing values in a string with multiple responses and semi-colons

 

Hi Gene,

 

Thanks for your quick response. I will rephrase my question. That is, I only want to count the missing values before the last integer. Am I making sense now?

 

Sorry for the confusion.

 

Sincerely,

Jialin 

On Mon, Nov 28, 2011 at 12:08 PM, Gene Maguin <[hidden email]> wrote:

Ok, I missed accounting for the situation where the first item is missing. This will do that.

 

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1. 

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

 

 

 

From: huang jialin [mailto:[hidden email]]
Sent: Monday, November 28, 2011 12:54 PM
To: Gene Maguin
Cc: [hidden email]
Subject: Re: How to calculate missing values in a string with multiple responses and semi-colons

 

Hi Gene,

 

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

 

Thank you very much.

 

Sincerely,

Jialin

 

 

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <[hidden email]> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

 

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

 

 

 

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent: Monday, November 28, 2011 12:23 PM
To: [hidden email]
Subject: How to calculate missing values in a string with multiple responses and semi-colons

 

Hello,

 

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

 

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

 

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

 

How can I got the number of missing items? 

 

I would appreciate your helps. 

 

Sincerely,

Jialin

 

 

 

Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

Ruben Geert van den Berg
Or maybe omit everything after the last integer with a rindex function? The same kind of index function can be used to hunt down those respondents who didn't fill out any answer (if rind(v1,'0123456789',1)=0 missings=-999. or whatever value you'd like for them).

data list free/v1(a113).
begin data
1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2
2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;2
end data.

comp missings=subs(v1,1,1)=';'.
loop #i=1 to rind(v1,'0123456789',1).
if subs(v1,#i,2)=';;' missings=missings+1.
end loop.
EXECUTE.



Date: Mon, 28 Nov 2011 14:57:16 -0500
From: [hidden email]
Subject: Re: How to calculate missing values in a string with multiple responses and semi-colons
To: [hidden email]

Ok, now I understand. So the problem is to find the last numeric value and search the string prior to that position for paired semicolons or a semicolon in position 1. So:

String #v(a150).

Compute #v=rtrim(V,’;’).

Compute nmissing=0.

If (substr(#V,1,1) eq ‘;’) nmissing=nmissing+1. 

Compute #j=char.length(#v).

Loop #i=1 to #j.

If (substr(#V,#i,2) eq ‘;;’) nmissing=nmissing+1.

End loop.

 

Try this out and let me know.

 

Gene Maguin

 

From: huang jialin [mailto:[hidden email]]
Sent: Monday, November 28, 2011 1:15 PM
To: Gene Maguin
Cc: [hidden email]
Subject: Re: How to calculate missing values in a string with multiple responses and semi-colons

 

Hi Gene,

 

Thanks for your quick response. I will rephrase my question. That is, I only want to count the missing values before the last integer. Am I making sense now?

 

Sorry for the confusion.

 

Sincerely,

Jialin 

On Mon, Nov 28, 2011 at 12:08 PM, Gene Maguin <[hidden email]> wrote:

Ok, I missed accounting for the situation where the first item is missing. This will do that.

 

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1. 

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

 

 

 

From: huang jialin [mailto:[hidden email]]
Sent: Monday, November 28, 2011 12:54 PM
To: Gene Maguin
Cc: [hidden email]
Subject: Re: How to calculate missing values in a string with multiple responses and semi-colons

 

Hi Gene,

 

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

 

Thank you very much.

 

Sincerely,

Jialin

 

 

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <[hidden email]> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

 

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

 

 

 

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent: Monday, November 28, 2011 12:23 PM
To: [hidden email]
Subject: How to calculate missing values in a string with multiple responses and semi-colons

 

Hello,

 

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

 

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

 

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

 

How can I got the number of missing items? 

 

I would appreciate your helps. 

 

Sincerely,

Jialin

 

 

 

Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

Rick Oliver-3
In reply to this post by huang jialin
data list list /stringvar (a120).
begin data
1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;4;1;4;2;1;5;;;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2
2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;
end data.
string #temp (a120).
compute #temp=replace(stringvar, ";"," ").
compute count=0.
if char.length(ltrim(#temp))>0 count=1.
loop #i=1 to char.length(#temp).
if substr(#temp, #i, 1)=' ' count=count+1.
end loop.
execute.



Rick Oliver
Senior Information Developer
Business Analytics (SPSS)
E-mail: [hidden email]




From:        Rick Oliver/Chicago/IBM
To:        huang jialin <[hidden email]>, [hidden email]
Date:        11/28/2011 01:06 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons



Oops. That's not right. never mind.

Rick Oliver
Senior Information Developer
IBM Business Analytics (SPSS)
E-mail: [hidden email]





From:        Rick Oliver/Chicago/IBM
To:        huang jialin <[hidden email]>
Cc:        [hidden email]
Date:        11/28/2011 12:53 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons



Rick Oliver
Senior Information Developer
IBM Business Analytics (SPSS)
E-mail: [hidden email]


****sample data***.
data list list /stringvar (a120).
begin data
1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2
2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;
end data.
write outfile='c:\temp\temp.txt' /stringvar.
execute.
***real code starts here. just read the original text data file this way***.
data list list (";")  file='c:\temp\temp.txt' /numvar1 to numvar50.
compute numvalid=nvalid(numvar1 to numvar50).
execute.




From:        huang jialin <[hidden email]>
To:        [hidden email]
Date:        11/28/2011 12:19 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons
Sent by:        "SPSSX(r) Discussion" <[hidden email]>




Hi Gene,

Thanks for your quick response. I will rephrase my question. That is, I only want to count the missing values before the last integer. Am I making sense now?

Sorry for the confusion.

Sincerely,
Jialin 

On Mon, Nov 28, 2011 at 12:08 PM, Gene Maguin <emaguin@...> wrote:
Ok, I missed accounting for the situation where the first item is missing. This will do that.

 

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1. 

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

 

 

 

From: huang jialin [mailto:huangpsych@...]
Sent:
Monday, November 28, 2011 12:54 PM
To:
Gene Maguin
Cc:
[hidden email]
Subject:
Re: How to calculate missing values in a string with multiple responses and semi-colons

 

Hi Gene,

 

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

 

Thank you very much.

 

Sincerely,

Jialin

 

 

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <emaguin@...> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

 

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

 

 

 

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent:
Monday, November 28, 2011 12:23 PM
To:
[hidden email]
Subject:
How to calculate missing values in a string with multiple responses and semi-colons

 

Hello,

 

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

 

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

 

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

 

How can I got the number of missing items? 

 

I would appreciate your helps. 

 

Sincerely,

Jialin

 

 

Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

huang jialin
Rick,

Thanks for your email. I tried your solution, but it does not do the exact things I want. As some items have multiple responses, the syntax you have break them down and count them separately.

Thank you.

Sincerely,
Jialin 


On Mon, Nov 28, 2011 at 3:14 PM, Rick Oliver <[hidden email]> wrote:
data list list /stringvar (a120).
begin data
1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;4;1;4;2;1;5;;;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2
2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;
end data.
string #temp (a120).
compute #temp=replace(stringvar, ";"," ").
compute count=0.
if char.length(ltrim(#temp))>0 count=1.
loop #i=1 to char.length(#temp).
if substr(#temp, #i, 1)=' ' count=count+1.
end loop.
execute.



Rick Oliver
Senior Information Developer
Business Analytics (SPSS)
E-mail: [hidden email]




From:        Rick Oliver/Chicago/IBM
To:        huang jialin <[hidden email]>, [hidden email]
Date:        11/28/2011 01:06 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons



Oops. That's not right. never mind.

Rick Oliver
Senior Information Developer
IBM Business Analytics (SPSS)
E-mail: [hidden email]





From:        Rick Oliver/Chicago/IBM
To:        huang jialin <[hidden email]>
Cc:        [hidden email]
Date:        11/28/2011 12:53 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons



Rick Oliver
Senior Information Developer
IBM Business Analytics (SPSS)
E-mail: [hidden email]


****sample data***.
data list list /stringvar (a120).
begin data
1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2
2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;
end data.
write outfile='c:\temp\temp.txt' /stringvar.
execute.
***real code starts here. just read the original text data file this way***.
data list list (";")  file='c:\temp\temp.txt' /numvar1 to numvar50.
compute numvalid=nvalid(numvar1 to numvar50).
execute.




From:        huang jialin <[hidden email]>
To:        [hidden email]
Date:        11/28/2011 12:19 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons
Sent by:        "SPSSX(r) Discussion" <[hidden email]>




Hi Gene,

Thanks for your quick response. I will rephrase my question. That is, I only want to count the missing values before the last integer. Am I making sense now?

Sorry for the confusion.

Sincerely,
Jialin 

On Mon, Nov 28, 2011 at 12:08 PM, Gene Maguin <[hidden email]> wrote:
Ok, I missed accounting for the situation where the first item is missing. This will do that.

 

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1. 

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

 

 

 

From: huang jialin [mailto:[hidden email]]
Sent:
Monday, November 28, 2011 12:54 PM
To:
Gene Maguin
Cc:
[hidden email]
Subject:
Re: How to calculate missing values in a string with multiple responses and semi-colons

 

Hi Gene,

 

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

 

Thank you very much.

 

Sincerely,

Jialin

 

 

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <[hidden email]> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

 

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

 

 

 

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent:
Monday, November 28, 2011 12:23 PM
To:
[hidden email]
Subject:
How to calculate missing values in a string with multiple responses and semi-colons

 

Hello,

 

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

 

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

 

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

 

How can I got the number of missing items? 

 

I would appreciate your helps. 

 

Sincerely,

Jialin

 

 


Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

Rick Oliver-3
No, this syntax does not count them separately, it counts each contiguous sequence of numeric digits as a single value. Counting them separately would actually be easier.



From:        huang jialin <[hidden email]>
To:        [hidden email]
Date:        11/28/2011 03:23 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons
Sent by:        "SPSSX(r) Discussion" <[hidden email]>




Rick,

Thanks for your email. I tried your solution, but it does not do the exact things I want. As some items have multiple responses, the syntax you have break them down and count them separately.

Thank you.

Sincerely,
Jialin 


On Mon, Nov 28, 2011 at 3:14 PM, Rick Oliver <oliverr@...> wrote:
data list list /stringvar (a120).
begin data

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

end data.
string #temp (a120).

compute #temp=replace(stringvar, ";"," ").

compute count=0.

if char.length(ltrim(#temp))>0 count=1.

loop #i=1 to char.length(#temp).

if substr(#temp, #i, 1)=' ' count=count+1.

end loop.

execute.




Rick Oliver
Senior Information Developer

Business Analytics (SPSS)
E-mail:
oliverr@...




From:        
Rick Oliver/Chicago/IBM
To:        
huang jialin <huangpsych@...>, [hidden email]
Date:        
11/28/2011 01:06 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons




Oops. That's not right. never mind.


Rick Oliver
Senior Information Developer
IBM Business Analytics (SPSS)
E-mail:
oliverr@...




From:        Rick Oliver/Chicago/IBM
To:        
huang jialin <huangpsych@...>
Cc:        
[hidden email]
Date:        
11/28/2011 12:53 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons




Rick Oliver
Senior Information Developer
IBM Business Analytics (SPSS)
E-mail:
oliverr@...

****sample data***.

data list list /stringvar (a120).

begin data

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

end data.
write outfile='c:\temp\temp.txt' /stringvar.

execute.

***real code starts here. just read the original text data file this way***.

data list list (";")  file='c:\temp\temp.txt' /numvar1 to numvar50.
compute numvalid=nvalid(numvar1 to numvar50).
execute.





From:        huang jialin <huangpsych@...>
To:        
[hidden email]
Date:        
11/28/2011 12:19 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons
Sent by:        "SPSSX(r) Discussion" <[hidden email]>




Hi Gene,

Thanks for your quick response. I will rephrase my question. That is, I only want to count the missing values before the last integer. Am I making sense now?

Sorry for the confusion.

Sincerely,
Jialin 

On Mon, Nov 28, 2011 at 12:08 PM, Gene Maguin <
emaguin@...> wrote:
Ok, I missed accounting for the situation where the first item is missing. This will do that.

 

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1. 

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

 

 

 

From: huang jialin [mailto:huangpsych@...]
Sent:
Monday, November 28, 2011 12:54 PM
To:
Gene Maguin
Cc:
[hidden email]
Subject:
Re: How to calculate missing values in a string with multiple responses and semi-colons

 

Hi Gene,

 

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

 

Thank you very much.

 

Sincerely,

Jialin

 

 

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <emaguin@...> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

 

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

 

 

 

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent:
Monday, November 28, 2011 12:23 PM
To:
[hidden email]
Subject:
How to calculate missing values in a string with multiple responses and semi-colons

 

Hello,

 

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

 

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

 

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

 

How can I got the number of missing items? 

 

I would appreciate your helps. 

 

Sincerely,

Jialin

 

 

Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

huang jialin
Hi Rick,

Sorry for misunderstanding. I think you are right. But it includes the missing values in the middle of string, how to count the missing values alone?

Thanks.

Sincerely,
Jialin


On Mon, Nov 28, 2011 at 3:43 PM, Rick Oliver <[hidden email]> wrote:
No, this syntax does not count them separately, it counts each contiguous sequence of numeric digits as a single value. Counting them separately would actually be easier.



From:        huang jialin <[hidden email]>
To:        [hidden email]
Date:        11/28/2011 03:23 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons
Sent by:        "SPSSX(r) Discussion" <[hidden email]>




Rick,

Thanks for your email. I tried your solution, but it does not do the exact things I want. As some items have multiple responses, the syntax you have break them down and count them separately.

Thank you.

Sincerely,
Jialin 


On Mon, Nov 28, 2011 at 3:14 PM, Rick Oliver <[hidden email]> wrote:
data list list /stringvar (a120).
begin data

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

end data.
string #temp (a120).

compute #temp=replace(stringvar, ";"," ").

compute count=0.

if char.length(ltrim(#temp))>0 count=1.

loop #i=1 to char.length(#temp).

if substr(#temp, #i, 1)=' ' count=count+1.

end loop.

execute.




Rick Oliver
Senior Information Developer

Business Analytics (SPSS)
E-mail:
[hidden email]




From:        
Rick Oliver/Chicago/IBM
To:        
huang jialin <[hidden email]>, [hidden email]
Date:        
11/28/2011 01:06 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons




Oops. That's not right. never mind.


Rick Oliver
Senior Information Developer
IBM Business Analytics (SPSS)
E-mail:
[hidden email]




From:        Rick Oliver/Chicago/IBM
To:        
huang jialin <[hidden email]>
Cc:        
[hidden email]
Date:        
11/28/2011 12:53 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons




Rick Oliver
Senior Information Developer
IBM Business Analytics (SPSS)
E-mail:
[hidden email]

****sample data***.

data list list /stringvar (a120).

begin data

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

end data.
write outfile='c:\temp\temp.txt' /stringvar.

execute.

***real code starts here. just read the original text data file this way***.

data list list (";")  file='c:\temp\temp.txt' /numvar1 to numvar50.
compute numvalid=nvalid(numvar1 to numvar50).
execute.





From:        huang jialin <[hidden email]>
To:        
[hidden email]
Date:        
11/28/2011 12:19 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons
Sent by:        "SPSSX(r) Discussion" <[hidden email]>




Hi Gene,

Thanks for your quick response. I will rephrase my question. That is, I only want to count the missing values before the last integer. Am I making sense now?

Sorry for the confusion.

Sincerely,
Jialin 

On Mon, Nov 28, 2011 at 12:08 PM, Gene Maguin <
[hidden email]> wrote:
Ok, I missed accounting for the situation where the first item is missing. This will do that.

 

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1. 

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

 

 

 

From: huang jialin [mailto:[hidden email]]
Sent:
Monday, November 28, 2011 12:54 PM
To:
Gene Maguin
Cc:
[hidden email]
Subject:
Re: How to calculate missing values in a string with multiple responses and semi-colons

 

Hi Gene,

 

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

 

Thank you very much.

 

Sincerely,

Jialin

 

 

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <[hidden email]> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

 

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

 

 

 

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent:
Monday, November 28, 2011 12:23 PM
To:
[hidden email]
Subject:
How to calculate missing values in a string with multiple responses and semi-colons

 

Hello,

 

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

 

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

 

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

 

How can I got the number of missing items? 

 

I would appreciate your helps. 

 

Sincerely,

Jialin

 

 


Reply | Threaded
Open this post in threaded view
|

Re: How to calculate missing values in a string with multiple responses and semi-colons

Rick Oliver-3
I guess I misunderstood what you were trying to accomplish. I thought you wanted to know the point at which they stopped responding.

What is it that you want? The first solution I sent you returns total missing values. It could be adapted to count missing values prior to the point at which responses stop. Is that what you want?


Rick Oliver
Senior Information Developer
Business Analytics (SPSS)
E-mail: [hidden email]





From:        huang jialin <[hidden email]>
To:        Rick Oliver/Chicago/IBM@IBMUS
Cc:        [hidden email]
Date:        11/28/2011 03:49 PM
Subject:        Re: How to calculate missing values in a string with multiple responses and semi-colons




Hi Rick,

Sorry for misunderstanding. I think you are right. But it includes the missing values in the middle of string, how to count the missing values alone?

Thanks.

Sincerely,
Jialin


On Mon, Nov 28, 2011 at 3:43 PM, Rick Oliver <oliverr@...> wrote:
No, this syntax does not count them separately, it counts each contiguous sequence of numeric digits as a single value. Counting them separately would actually be easier.



From:        
huang jialin <huangpsych@...>
To:        
[hidden email]
Date:        11/28/2011 03:23 PM
Subject:        Re: How to calculate missing values in a string with multiple              responses and semi-colons
Sent by:        
"SPSSX(r) Discussion" <[hidden email]>




Rick,

Thanks for your email. I tried your solution, but it does not do the exact things I want. As some items have multiple responses, the syntax you have break them down and count them separately.

Thank you.

Sincerely,
Jialin 


On Mon, Nov 28, 2011 at 3:14 PM, Rick Oliver <
oliverr@...> wrote:
data list list /stringvar (a120).

begin data

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

end data.

string #temp (a120).

compute #temp=replace(stringvar, ";"," ").

compute count=0.

if char.length(ltrim(#temp))>0 count=1.

loop #i=1 to char.length(#temp).

if substr(#temp, #i, 1)=' ' count=count+1.

end loop.

execute.




Rick Oliver
Senior Information Developer

Business Analytics (SPSS)
E-mail:
oliverr@...




From:        
Rick Oliver/Chicago/IBM
To:        
huang jialin <huangpsych@...>, [hidden email]
Date:        
11/28/2011 01:06 PM
Subject:        
Re: How to calculate missing values in a string with multiple              responses and semi-colons




Oops. That's not right. never mind.


Rick Oliver
Senior Information Developer
IBM Business Analytics (SPSS)
E-mail:
oliverr@...




From:        
Rick Oliver/Chicago/IBM
To:        
huang jialin <huangpsych@...>
Cc:        
[hidden email]
Date:        
11/28/2011 12:53 PM
Subject:        
Re: How to calculate missing values in a string with multiple              responses and semi-colons




Rick Oliver
Senior Information Developer
IBM Business Analytics (SPSS)
E-mail:
oliverr@...

****sample data***.

data list list /stringvar (a120).

begin data

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

end data.

write outfile='c:\temp\temp.txt' /stringvar.

execute.

***real code starts here. just read the original text data file this way***.

data list list (";")  file='c:\temp\temp.txt' /numvar1 to numvar50.

compute numvalid=nvalid(numvar1 to numvar50).

execute.





From:        
huang jialin <huangpsych@...>
To:        
[hidden email]
Date:        
11/28/2011 12:19 PM
Subject:        
Re: How to calculate missing values in a string with multiple              responses and semi-colons
Sent by:        
"SPSSX(r) Discussion" <[hidden email]>




Hi Gene,

Thanks for your quick response. I will rephrase my question. That is, I only want to count the missing values before the last integer. Am I making sense now?

Sorry for the confusion.

Sincerely,
Jialin 

On Mon, Nov 28, 2011 at 12:08 PM, Gene Maguin <
emaguin@...> wrote:
Ok, I missed accounting for the situation where the first item is missing. This will do that.

 

Compute nmissing=0.

If (substr(V,1,1) eq ‘;’) nmissing=nmissing+1. 

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

I don’t know what you mean by this: ‘Second, I do not want to count the missing values when there is no response at all’. How do you tell the difference between a missing value and ‘no response at all’.

 

 

 

From: huang jialin [mailto:huangpsych@...]
Sent:
Monday, November 28, 2011 12:54 PM
To:
Gene Maguin
Cc:
[hidden email]
Subject:
Re: How to calculate missing values in a string with multiple responses and semi-colons

 

Hi Gene,

 

Thanks for your email. There are still two questions needed to be solved. First, if the first item is missing, there is only one semicolon in the beginning of the string. Thus, it may not fit the comparison of pair of semicolons. Second, I do not want to count the missing values when there is no response at all. How can I do it?

 

Thank you very much.

 

Sincerely,

Jialin

 

 

On Mon, Nov 28, 2011 at 11:42 AM, Gene Maguin <emaguin@...> wrote:

It looks like adjacent semicolons (;;) mean a missing data value. I think all you need to do is to count pairs of semicolons. Let’s say the that the variable, V, is A150.

 

Compute nmissing=0.

Loop #i=1 to 149.

Do If (substr(V,#i,2) eq ‘;;’).

+  compute nmissing=nmissing+1.

Else if (substr(V,#i,2) eq ‘  ‘).

+  break.

End if.

End loop.

 

>>If you copy this text, make sure the quotes are straight and not curly. I think spss does not like curly.

 

 

 

From: SPSSX(r) Discussion [mailto:[hidden email]] On Behalf Of huang jialin
Sent:
Monday, November 28, 2011 12:23 PM
To:
[hidden email]
Subject:
How to calculate missing values in a string with multiple responses and semi-colons

 

Hello,

 

I have a variable in a dataset formatted as following:

1;1;5;1;4;3;;;2;2;134;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;5;3;;1;3;145;2;3;;5;5;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;1;3;1;5;1;4;4;2;1;;2;3;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;;3;;1;4;;4;2;3;5;;3;;4;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;5;1;3;1;;1;2;3;;2;2;;3;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

3;4;3;1;3;3;145;1;3;5;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;4;1;4;2;1;5;;3;234;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

1;1;5;1;4;2;1;1;2;2;234;4;5;4;1;145;2;2;3;125;3;5;1;2;2;5;234;3;2;3;2;2;5;3;4;;135;;4;4;135;;1;2;;234;;;;2

2;4;3;1;3;3;145;2;3;4;2;1;1;3;235;1;3;5;235;3;3;4;125;5;1;2;3;1;2;4;3;5;4;135;3;4;3;2;2;5;1;5;245;2;1;3;124;4;2;

 

There is 50 items in total, and they are separated by 49 semi-colons. For certain items, they contains multiple responses. I want to calculate how many items was missed before the responses stopped.

 

I tried to use length(trim(var)) to calculate the length of string, but it only turned out to be the number of responses. It is the same as using CHAR.LENGTH(var).

 

How can I got the number of missing items? 

 

I would appreciate your helps. 

 

Sincerely,

Jialin

 

 

12