[R] Value Labels: SPSS Dataset to R

John Kane jrkr|de@u @end|ng |rom gm@||@com
Sat Feb 8 15:25:25 CET 2020


Hi Yawo Kokuvi;
As an R newbie transitioning from SPSS to R expect culture shock and the
possible feeling that yor brain is twisting within your skull but it is
well worth.

Try something like this:
##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
dat1  <- 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"))


library(sjlabelled)
str(dat1)
get_labels(dat1)
barplot(table(as_label(dat1$Dance)))
##==================================================================
Your problem sees to be omitting the as_label().

You do not need to load "haven"
read_spss() in sjlabelled should do the trick.


On Sat, 8 Feb 2020 at 05:44, Rui Barradas <ruipbarradas using sapo.pt> wrote:

> 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.
> >
>
> ______________________________________________
> 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]]



More information about the R-help mailing list