[R] Value Labels: SPSS Dataset to R

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Sat Feb 8 11:44:28 CET 2020


Hello,

Try

aux_fun <- function(x){
   levels <- attr(x, "labels")
   factor(x, labels = names(levels), levels = levels)
}

newCatsDogs <- as.data.frame(lapply(CatsDogs, aux_fun))

str(newCatsDogs)
#'data.frame':	10 obs. of  3 variables:
# $ Animal  : Factor w/ 2 levels "Cat","Dog": 1 1 1 1 1 1 1 1 1 1
# $ Training: Factor w/ 2 levels "Food as Reward",..: 1 1 1 1 1 1 1 1 1 1
# $ Dance   : Factor w/ 2 levels "No","Yes": 2 2 2 2 2 2 2 2 2 2


As for the
  - frequencies: ?table, ?tapply, ?aggregate,
  - barplots: ?barplot

You can find lots and lots of examples online of both covering what 
seems to simple use cases.

Hope this helps,

Rui Barradas

Às 06:03 de 08/02/20, Yawo Kokuvi escreveu:
> Thanks for all. Here is output from dput.  I used a different dataset
> containing categorical variables since the previous one is on a different
> computer.
> 
> In the following dataset, my interest is in getting frequencies and
> barplots for the two variables: Training and Dance, with value labels
> displayed.
> 
> thanks again - cY
> 
> 
> =========
> dput(head(CatsDogs, n = 10))
> structure(
>    list(
>      Animal = structure(
>        c(0, 0, 0, 0, 0, 0, 0, 0, 0,
>          0),
>        label = "Animal",
>        labels = c(Cat = 0, Dog = 1),
>        class = "haven_labelled"
>      ),
>      Training = structure(
>        c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
>        label = "Type of Training",
>        labels = c(`Food as Reward` = 0,
>                   `Affection as Reward` = 1),
>        class = "haven_labelled"
>      ),
>      Dance = structure(
>        c(1,
>          1, 1, 1, 1, 1, 1, 1, 1, 1),
>        label = "Did they dance?",
>        labels = c(No = 0,
>                   Yes = 1),
>        class = "haven_labelled"
>      )
>    ),
>    row.names = c(NA,-10L),
>    class = c("tbl_df", "tbl", "data.frame")
> )
> 
> 
> On Fri, Feb 7, 2020 at 10:14 PM Bert Gunter <bgunter.4567 using gmail.com> wrote:
> 
>> Yes. Most attachments are stripped by the server.
>>
>> Bert Gunter
>>
>> "The trouble with having an open mind is that people keep coming along and
>> sticking things into it."
>> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>>
>>
>> On Fri, Feb 7, 2020 at 5:34 PM John Kane <jrkrideau using gmail.com> wrote:
>>
>>> Hi,
>>> Could you upload some sample data in dput form?  Something like
>>> dput(head(Scratch, n=13)) will give us some real data to examine. Just
>>> copy
>>> and paste the output of dput(head(Scratch, n=13))into the email. This is
>>> the best way to ensure that R-help denizens are getting the data in the
>>> exact format that you have.
>>>
>>> On Fri, 7 Feb 2020 at 15:32, Yawo Kokuvi <yawo1964 using gmail.com> wrote:
>>>
>>>> Thanks for all your assistance
>>>>
>>>> Attached please is the Rdata scratch I have been using
>>>>
>>>> -----------------------------------------------------
>>>>
>>>>> head(Scratch, n=13)
>>>> # A tibble: 13 x 6
>>>>        ID           marital        sex      race    paeduc    speduc
>>>>     <dbl>         <dbl+lbl>  <dbl+lbl> <dbl+lbl> <dbl+lbl> <dbl+lbl>
>>>>   1     1 3 [DIVORCED]      1 [MALE]   1 [WHITE]        NA        NA
>>>>   2     2 1 [MARRIED]       1 [MALE]   1 [WHITE]        NA        NA
>>>>   3     3 3 [DIVORCED]      1 [MALE]   1 [WHITE]         4        NA
>>>>   4     4 4 [SEPARATED]     1 [MALE]   1 [WHITE]        16        NA
>>>>   5     5 3 [DIVORCED]      1 [MALE]   1 [WHITE]        18        NA
>>>>   6     6 1 [MARRIED]       2 [FEMALE] 1 [WHITE]        14        20
>>>>   7     7 1 [MARRIED]       2 [FEMALE] 2 [BLACK]        NA        12
>>>>   8     8 1 [MARRIED]       2 [FEMALE] 1 [WHITE]        NA        12
>>>>   9     9 3 [DIVORCED]      2 [FEMALE] 1 [WHITE]        11        NA
>>>> 10    10 1 [MARRIED]       2 [FEMALE] 1 [WHITE]        16        12
>>>> 11    11 5 [NEVER MARRIED] 2 [FEMALE] 2 [BLACK]        NA        NA
>>>> 12    12 3 [DIVORCED]      2 [FEMALE] 2 [BLACK]        NA        NA
>>>> 13    13 3 [DIVORCED]      2 [FEMALE] 2 [BLACK]        16        NA
>>>>
>>>> -----------------------------------------------------
>>>>
>>>> and below is my script/command file.
>>>>
>>>> *#1: Load library and import SPSS dataset*
>>>> library(haven)
>>>> Scratch <- read_sav("~/Desktop/Scratch.sav")
>>>>
>>>> *#2: save the dataset with a name*
>>>> save(ScratchImport, file="Scratch.Rdata")
>>>>
>>>> *#3: install & load necessary packages for descriptive statistics*
>>>> install.packages ("freqdist")
>>>> library (freqdist)
>>>>
>>>> install.packages ("sjlabelled")
>>>> library (sjlabelled)
>>>>
>>>> install.packages ("labelled")
>>>> library (labelled)
>>>>
>>>> install.packages ("surveytoolbox")
>>>> library (surveytoolbox)
>>>>
>>>> *#4: Check the value labels of gender and marital status*
>>>> Scratch$sex %>% attr('labels')
>>>> Scratch$marital %>% attr('labels')
>>>>
>>>> *#5:  Frequency Distribution and BarChart for Categorical/Ordinal Level
>>>> Variables such as Gender - SEX*
>>>> freqdist(Scratch$sex)
>>>> barplot(table(Scratch$marital))
>>>>
>>>> -----------------------------------------------------
>>>>
>>>> As you can see from above, I use the <haven> package to import the data
>>>> from SPSS.  Apparently, the haven function keeps the value labels, as
>>> the
>>>> attribute options in section #4 of my script shows.
>>>> The problem is that when I run frequency distribution for any of the
>>>> categorical variables like sex or marital status, only the numbers (1,
>>> 2,)
>>>> are displayed in the output.  The labels (male, female) for example are
>>>> not.
>>>>
>>>> Is there any way to force these to be shown in the output?  Is there a
>>>> global property that I have to set so that these value labels are
>>> reliably
>>>> displayed with every output?  I read I can declare them as factors using
>>>> the <as_factor()>, but once I do so, how do I invoke them in my
>>> commands so
>>>> that the value labels show...
>>>>
>>>> Sorry about all the noobs questions, but Ihopefully, I am able to get
>>> this
>>>> working.
>>>>
>>>> Thanks in advance.
>>>>
>>>>
>>>> Thanks - cY
>>>>
>>>>
>>>> On Fri, Feb 7, 2020 at 1:14 PM <cpolwart using chemo.org.uk> wrote:
>>>>
>>>>> I've never used it, but there is a labels function in haven...
>>>>>
>>>>> On 7 Feb 2020 17:05, Bert Gunter <bgunter.4567 using gmail.com> wrote:
>>>>>
>>>>> What does your data look like after importing? -- see ?head and ?str
>>> to
>>>>> tell us. Show us the code that failed to provide "labels." See the
>>>> posting
>>>>> guide below for how to post questions that are likely to elicit
>>> helpful
>>>>> responses.
>>>>>
>>>>> I know nothing about the haven package, but see ?factor or go through
>>> an
>>>> R
>>>>> tutorial or two to learn about factors, which may be part of the issue
>>>>> here. R *generally* obtains whatever "label" info it needs from the
>>>> object
>>>>> being tabled -- see ?tabulate, ?table etc. -- if that's what you're
>>>> doing.
>>>>>
>>>>> Bert Gunter
>>>>>
>>>>> "The trouble with having an open mind is that people keep coming along
>>>> and
>>>>> sticking things into it."
>>>>> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>>>>>
>>>>>
>>>>> On Fri, Feb 7, 2020 at 8:28 AM Yawo Kokuvi <yawo1964 using gmail.com>
>>> wrote:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I am just transitioning from SPSS to R.
>>>>>>
>>>>>> I used the haven library to import some of my spss data files to R.
>>>>>>
>>>>>> However, when I run procedures such as frequencies or crosstabs,
>>> value
>>>>>> labels for categorical variables such as gender (1=male, 2=female)
>>> are
>>>>> not
>>>>>> shown. The same applies to many other output.
>>>>>>
>>>>>> I am confused.
>>>>>>
>>>>>> 1. Is there a global setting that I can use to force all categorical
>>>>>> variables to display labels?
>>>>>>
>>>>>> 2. Or, are these labels to be set for each function or package?
>>>>>>
>>>>>> 3. How can I request the value labels for each function I run?
>>>>>>
>>>>>> Thanks in advance for your help..
>>>>>>
>>>>>> Best, Yawo
>>>>>>
>>>>>>          [[alternative HTML version deleted]]
>>>>>>
>>>>>> ______________________________________________
>>>>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>>>> PLEASE do read the posting guide
>>>>>> http://www.R-project.org/posting-guide.html
>>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>>>
>>>>>
>>>>> [[alternative HTML version deleted]]
>>>>>
>>>>> ______________________________________________
>>>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>>> PLEASE do read the posting guide
>>>>> http://www.R-project.org/posting-guide.html
>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>>
>>>>>
>>>>>
>>>>
>>>>          [[alternative HTML version deleted]]
>>>>
>>>> ______________________________________________
>>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide
>>>> http://www.R-project.org/posting-guide.html
>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>
>>>
>>>
>>> --
>>> John Kane
>>> Kingston ON Canada
>>>
>>>          [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list