Arbeiten mit zwei Gruppen (Likert und Histogramm)

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

allaperto
Beiträge: 10
Registriert: Mo Jan 27, 2020 2:36 pm

Arbeiten mit zwei Gruppen (Likert und Histogramm)

Beitrag 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
R-Forum.PNG (8.29 KiB) 522 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? :roll: Bei einer Summary oder einem Histogramm werden nun ALLE Daten hergenommen.... Also beispielsweise:

Code: Alles auswählen

summary(g)
hist(g$econ_comm, breaks=6, col="black")
Vielen Dank im Voraus für eure Hilfe.
Viele Grüße
Zuletzt geändert von jogo am Mo Jan 27, 2020 2:59 pm, insgesamt 1-mal geändert.
Grund: Formatierung verbessert. http://forum.r-statistik.de/viewtopic.php?f=20&t=29
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)

Beitrag 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
allaperto
Beiträge: 10
Registriert: Mo Jan 27, 2020 2:36 pm

Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)

Beitrag von allaperto »

Hallo Jörg,
Vielen Dank für deine schnelle Rückmeldung.
Der Output sieht folgendermaßen aus:
Output Str(g).PNG
Output Str(g).PNG (5.6 KiB) 515 mal betrachtet
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)

Beitrag 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
allaperto
Beiträge: 10
Registriert: Mo Jan 27, 2020 2:36 pm

Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)

Beitrag 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)
Dateianhänge
Likert-Plot.png
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)

Beitrag von jogo »

Hallo allaperto,

suche mal hier:
https://stackoverflow.com/search?q=%5Br%5D+likert+plot

Gruß, Jörg
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
allaperto
Beiträge: 10
Registriert: Mo Jan 27, 2020 2:36 pm

Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)

Beitrag 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!
allaperto
Beiträge: 10
Registriert: Mo Jan 27, 2020 2:36 pm

Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)

Beitrag 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?
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Arbeiten mit zwei Gruppen (Likert und Histogramm)

Beitrag 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
Antworten