Seite 1 von 2
Arbeiten mit zwei Gruppen (Likert und Histogramm)
Verfasst: Mo Jan 27, 2020 2:55 pm
von allaperto
Liebe R-Community,
Ich bin ein ziemlicher R-Newbie und möchte gerne eine Likert-Umfrage auswerten. Mein Ziel ist eine Auswertung mit dem Likert-Package. Aber eins nach dem anderen....
Ich habe nun die Daten (Auszug)

- R-Forum.PNG (8.29 KiB) 1351 mal betrachtet
aus einer Excel-Datei importiert und in R geladen. Auch habe ich die Werte in jeder Spalte definiert.
Dabei steht 1 für strongly agree, 2 für slightly agree, 3 für agree, 4 für disagree, 5 für slightly disagree und 6 für strongly disagree.
Code: Alles auswählen
#Laden der Daten aus Excel
g<-read.csv("C:/Users/csap4716/Documents/R/SurveyData.csv", sep=";", dec=",", header=TRUE)
#Definieren des Datentyps
g[,1]<-as.character(g[,1])
g[,2]<-as.numeric(g[,2])
g[,3]<-as.numeric(g[,3])
Ich habe zwei Gruppen, welche ich gerne gegenüberstellen bzw. miteinander vergleichen möchte. Wie kann ich nun gruppenspezifisch auswerten?

Bei einer Summary oder einem Histogramm werden nun ALLE Daten hergenommen.... Also beispielsweise:
Vielen Dank im Voraus für eure Hilfe.
Viele Grüße
Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)
Verfasst: Mo Jan 27, 2020 3:07 pm
von jogo
Hallo allaperto,
willkommen im Forum!
Kannst Du bitte den output nachfolgendem Codestück liefern:
Code: Alles auswählen
g <- read.csv2("C:/Users/csap4716/Documents/R/SurveyData.csv")
str(g)
Gruß, Jörg
Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)
Verfasst: Mo Jan 27, 2020 3:13 pm
von allaperto
Hallo Jörg,
Vielen Dank für deine schnelle Rückmeldung.
Der Output sieht folgendermaßen aus:

- Output Str(g).PNG (5.6 KiB) 1344 mal betrachtet
Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)
Verfasst: Mo Jan 27, 2020 3:24 pm
von jogo
Hallo allaperto,
ok, Du musst also nicht in numeric umwandeln.
Weiter gehts:
Code: Alles auswählen
g <- read.csv2("C:/Users/csap4716/Documents/R/SurveyData.csv")
by(g, g$Location, FUN=summary)
xtabs(~ Location + econ_comm, data=g)
tapply(g$future_persp, g$Location, FUN=table)
par(mfcol=c(1,2))
tapply(g$future_persp, g$Location, FUN=hist)
Gruß, Jörg
Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)
Verfasst: Mo Jan 27, 2020 3:45 pm
von allaperto
Hallo Jörg,
das funktioniert hervorragend, vielen vielen Dank dafür.
Code: Alles auswählen
> by(g, g$Location, FUN=summary)
g$Location: Community1
Location future_persp econ_comm
Community1:32 Min. :1.0 Min. :2.0
Community2: 0 1st Qu.:3.0 1st Qu.:3.8
Median :5.0 Median :5.0
Mean :4.1 Mean :4.7
3rd Qu.:5.0 3rd Qu.:6.0
Max. :6.0 Max. :6.0
------------------------------------------------------------------------------------------
g$Location: Community2
Location future_persp econ_comm
Community1: 0 Min. :1.0 Min. :1.0
Community2:26 1st Qu.:2.0 1st Qu.:2.0
Median :3.0 Median :3.0
Mean :2.9 Mean :2.8
3rd Qu.:4.0 3rd Qu.:3.0
Max. :5.0 Max. :6.0
> xtabs(~ Location + econ_comm, data=g)
econ_comm
Location 1 2 3 4 5 6
Community1 0 4 4 1 12 11
Community2 4 6 12 1 2 1
> tapply(g$future_persp, g$Location, FUN=table)
$Community1
1 2 3 5 6
2 1 12 11 6
$Community2
1 2 3 4 5
1 11 6 6 2
Das heißt mit tapply(g$future_persp, g$Location, FUN=table) bekomme ich die Auswertung für future_persp sortiert nach location. Ich möchte jetzt nicht drei Schritte überspringen, aber hast du einen heißen Tipp wie ich damit meinem Ziel eines Likert-Plots (Demo-Code unten, ein Beispiel sortiert nach Gruppen im Anhang) näherkommen könnte?
Code: Alles auswählen
options(digits=2)
require(likert)
data(pisaitems)
##### Item 24: Reading Attitudes
items24 <- pisaitems[,substr(names(pisaitems), 1,5) == 'ST24Q']
head(items24); ncol(items24)
names(items24) <- c(
ST24Q01="I read only if I have to.",
ST24Q02="Reading is one of my favorite hobbies.",
ST24Q03="I like talking about books with other people.",
ST24Q04="I find it hard to finish books.",
ST24Q05="I feel happy if I receive a book as a present.",
ST24Q06="For me, reading is a waste of time.",
ST24Q07="I enjoy going to a bookstore or a library.",
ST24Q08="I read only to get information that I need.",
ST24Q09="I cannot sit still and read for more than a few minutes.",
ST24Q10="I like to express my opinions about books I have read.",
ST24Q11="I like to exchange books with my friends.")
str(items24)
l24 <- likert(items24)
l24 #print(l24)
summary(l24)
summary(l24, center=1.5)
summary(l24, center=2)
# xtable
xtable(l24)
# Plots
plot(l24)
Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)
Verfasst: Mo Jan 27, 2020 3:51 pm
von jogo
Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)
Verfasst: Di Jan 28, 2020 8:10 am
von bigben
Ich glaube, das hier trifft ziemlich genau:
https://bookdown.org/Rmadillo/likert/al ... alize.html und dort Speziell Abschnitt 3.3.3
LG,
Bernhard
Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)
Verfasst: Di Jan 28, 2020 8:13 am
von allaperto
Hallo Jörg, hallo Bernhard,
Ich danke euch beiden für die guten Tipps. Das schaue ich mir gleich mal alles in Ruhe an.
Viele Grüße!
Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)
Verfasst: Mi Feb 05, 2020 8:22 am
von allaperto
Hallo zusammen,
Ich habe versucht Abschnitt 3.3. von hier
https://bookdown.org/Rmadillo/likert/al ... alize.html nachzubauen, scheine aber etwas grundlegend falsch zu machen, denn ich bekomme bereits fehlermeldungen zu meinem dataframe. Auch den Abschnitt 3.1. kann ich leider nicht für mein Beispiel umsetzen. Hier mal mein (kläglicher) Versuch für 3.3.:
Code: Alles auswählen
g<-read.csv2("C:/Users/SurveyData.csv", sep=";", dec=",", header=TRUE)
str(g)
by(g, g$Location, FUN=summary)
xtabs(~ Location + econ_comm, data=g)
tapply(g$future_persp, g$Location, FUN=table)
both_likert_2 = likert(both[, c(2:3), drop=FALSE], grouping = both$location)
plot(both_likert_2, include.histogram = TRUE)
Als Antwort bekomme ich:
Code: Alles auswählen
> both_likert_2 = likert(both[, c(2:3), drop=FALSE], grouping = both$location)
Fehler in "data.frame" %in% class(items) : Objekt 'both' nicht gefunden
> plot(both_likert_2, include.histogram = TRUE)
Fehler in plot(both_likert_2, include.histogram = TRUE) :
Objekt 'both_likert_2' nicht gefunden
Kann mir vielleicht jemanden weiterhelfen?
Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)
Verfasst: Mi Feb 05, 2020 8:28 am
von jogo
Hallo allaperto,
wahrscheinlich hast Du vergessen, das Objekt both zu erzeugen (z.B. Zuweisung vergessen für das Ergebnis einer der drei Zeilen vor dem Aufruf von likert()).
Deshalb scheitert die Funktion likert() mit der Folge, dass auch das Objekt both_likert_2 nicht erzeugt wird. ...
Gruß, Jörg