Skip to content

(PR#9896) read.spss converts string variables with

3 messages · honza at ifolk.cz, Brian Ripley

#
------=_20070905112441_38848
Content-Type: text/plain; charset="iso-8859-2"
Content-Transfer-Encoding: 8bit

I am sending two files attached. The file problem_file.sav was saved in
SPSS 10.0. It contains variables of various types, with and without
labeling etc., so that you can make experiments.

The file problem_file_read.RData was saved in R 2.5.1 (foreign library
version 0.8-20). It contains two data frames Schools and Schools2. The
former is result of
read.spss("problem_file.sav",to.data.frame=TRUE,use.value.labels=TRUE),
the latter differs in use.value.lables=FALSE only. As you can see, in the
first case read.spss has not read values of string labeled variables at
all.

I use WinXP.

Thank you for your work!

Jan Hucin

-------------------------------------------------------------------
Reference: <20070903104656.1D1566691D at slim.kubism.ku.dk>

There is nothing we can do to reproduce this without an example 'some.sav'
file exhibiting the problem.  Can you please supply one?
On Mon, 3 Sep 2007, honza at ifolk.cz wrote:

            
variable
abc=read.spss("some.sav",use.value.labels=TRUE), we
get "N/A"
"1",
Numeric

  
    
#
Thank you.

If anyone wants to work on a patch I've put the unencoded files from my 
direct copy at

http://www.stats.ox.ac.uk/pub/bdr/problem_file.sav
http://www.stats.ox.ac.uk/pub/bdr/problem_file_read.RData

I am afraid I won't have a chance to take a look for at least a couple of 
weeks.
On Wed, 5 Sep 2007, honza at ifolk.cz wrote:

            

  
    
11 days later
#
The problem here is that the values in the data do not have trailing
blanks, and the corresponding values in the label table do.  That's an
issue about the specific SPSS file, not mentioned in this report.

Take a look at the data read with use.value.labels=FALSE:
[1] "CZE" "CZE" "CZE" "CZE" "CZE" "CZE" "CZE" "CZE" "CZE" "CZE"
attr(,"value.labels")
      United States            Uruguay             Turkey
         "USA     "         "URY     "         "TUR     "
            Tunisia           Thailand     Chinese Taipei
         "TUN     "         "THA     "         "TAP     "
             Sweden          Slovenia     Slovak Republic
         "SWE     "         "SVN     "         "SVK     "
...

There is another example of this in the test suite:
...
       WT58           DAYOFWK     VITAL10    FAMHXCVR        CHD
  Min.   :123.0   MISSING :130   ALIVE:179   NO  :  0   Min.   :0.0
  1st Qu.:156.0   SUNDAY  : 19   DEAD : 61   YES :  0   1st Qu.:0.0
  Median :171.0   TUESDAY : 19               NA's:240   Median :0.5
  Mean   :173.4   WEDNSDAY: 17                          Mean   :0.5
  3rd Qu.:187.0   SATURDAY: 16                          3rd Qu.:1.0
  Max.   :278.0   THURSDAY: 15                          Max.   :1.0
                  (Other) : 24

where the label.table attribute has

Browse[1]> vl[[12]]
        YES         NO
"Y       " "N       "

but the values are "Y" or "N".  And it has been that way since at least R 
1.6.2.

I think this has to be a case unanticipated by the original author of 
read.spss, and needs to be covered by a new argument to read.spss, since 
presumably trimming when matching might not always be required.
On Wed, 5 Sep 2007, Prof Brian Ripley wrote: