Read data list free with consecutive commas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | SPSS AnswerNet: Result Solution ID: 100000524 Product: SPSS Base Title: DATA LIST FREE with commas in SPSS Description: Q. I am running SPSS 8.0 for Windows. I noticed on the DATA LIST documentation that multiple commas will not be interpreted as multiple data element delimiters. If I read my data with DATA LIST using the FREE keyword the data is not read correctly. DATA LIST LIST will get me around this problem, but I have many subjects with missing data and it will be extremely difficult to get around the problem. Is there anything I can do? A. There is if the data are structured such that there are two commas to denote a single vacant value and 3 to denote 2 sequential missing values, etc. The basic idea is to read the entire record into one long string and then use parsing techniques to slice up the record into small pieces. **** CAUTIONS: 1. You may not have any embedded commas in the values. 2. You will need to modify the program if records are longer than 80 columns (DATA must be in an external file) 3. If the record is longer than 255 characters then you will need to read multiple long strings and parse them as well. 4. MODIFY program to reflect the number of variables YOU have. 5. All variables for a case must be on the same record. DATA LIST / X 1-80 (A) . BEGIN DATA 1,1,6 2, ,5 3,2,3 end data . VECTOR NX(3,a8) . COMPUTE #VAR=0 . LOOP . COMPUTE #VAR = #VAR + 1 . COMPUTE #START = INDEX(X,',') . COMPUTE NX(#VAR) = RTRIM(RTRIM(LTRIM(LTRIM(SUBSTR(X,1,#START - 1)),"'")),"'"). COMPUTE X=LTRIM(SUBSTR(X,#START+1,LENGTH(X)-#START -1)) . END LOOP IF INDEX(X,',') = 0 . COMPUTE NX(#VAR+1) = RTRIM(RTRIM(LTRIM(LTRIM(X,"'"))),"'"). EXE. |
Related pages
...