Wichtig: Die zur Setvariable gehörenden Variablen müssen alle als Faktoren mit denselben Stufenbezeichnungen definiert sein.
Beispiel: Erstellen einer Häufigkeitstabelle für die Variable “Gründe für die Wahl der Psychologie als Studienfach” (Studiengründe). Es konnten maximal drei der zehn Auswahlantworten angekreuzt werden, d.h. zur Kodierung wurden drei Variablen benötigt (v1_l1, v1_l2, v1_l3). Diese Variablen müssen zu einer Setvariablen zusammengefasst werden, um pro Antwortkategorie zu bestimmen, wie häufig sie gewählt wurde. Aus diesen absoluten Häufigkeiten lassen sich auf zwei verschiedene Arten relative Häufigkeiten berechnen. Einerseits kann man die absoluten Häufigkeiten durch die Gesamtanzahl der angekreuzten Alternativantworten dividieren “Anteil an der Gesamtanzahl Antworten (497)”, andererseits kann man sie durch die Anzahl Fälle (Probanden) dividieren “Anteil an der Anzahl Fälle (189)”. In Klammern steht jeweils die Bezugsgrösse. Die Anzahl der Fälle entspricht der Anzahl Personen, die mindestens eine Antwortkategorie angekreuzt haben. Die Gesamtanzahl der angekreuzten Alternativantworten kann deutlich höher liegen. In unserem Beispiel kann sie maximal drei mal so gross wie die Fallzahl sein. Dies ist der Fall, wenn jeder Proband drei Alternativantworten ankreuzt.
library(ggplot2) # Grafik
# Dateneingabe
data <- read.table(file="https://mmi.psycho.unibas.ch/r-toolbox/data/Eingangsfragebogen11.txt", header=TRUE)
num.set <- 6:8 # Spaltennummern der beteiligten Variablen eingegeben
Setvariable <- "Studiengründe" # Name der Setvariable eingeben
# Variablen zu Matrix "komb.set" zusammenfassen und Stufen bestimmen "lev.set"
komb.set <- data[,num.set]
lev.set <- character()
for (i in 1:length(num.set)) {
komb.set[,i] <- as.factor(komb.set[,i])
lev.set <- c(lev.set, levels(komb.set[,i]))}
lev.set <- unique(lev.set) # Vektor mit allen Stufen
n.lev.set <- length(lev.set)
# "listwise" deletion
FW <- apply(komb.set, 1, function(x) sum(is.na(x))==length(num.set))
komb.set <- komb.set[FW!=1,]
# 0-1 Matrix generieren
set <- matrix(0, nrow=nrow(komb.set), ncol=n.lev.set)
for (i in 1:nrow(set)) set[i, lev.set %in% t(komb.set[i,])] <- 1
# Tabelle generieren
abs.H <- apply(set, 2, sum)
tab <- data.frame(N=abs.H, rel.Antworten=abs.H/sum(abs.H), rel.Cases=abs.H/nrow(komb.set))
tab <- rbind(tab, apply(tab, 2, sum))
rownames(tab) <- c(lev.set, "Total")
colnames(tab) <- c("Anzahl Antworten", paste0("Anteil an der Gesamtanzahl Antworten (", sum(abs.H), ")"), paste0("Anteil an der Anzahl Fälle (",nrow(set), ")"))
data2 <- tab[-nrow(tab),]
data2[,Setvariable] <- rownames(data2)
list("Häufigkeitstabelle"=tab)
## $Häufigkeitstabelle
## Anzahl Antworten
## anstelle des Medizinstudiums 20
## berufliche Moeglichkeiten 81
## Fach/Wissenschaft 30
## Interesse am Menschen 148
## Krankheitsbilder 78
## persoenliche Interessen 48
## psychosozialer Beruf 41
## thematisches Interesse 17
## Zweitausbildung 24
## Empfehlung durch Andere 10
## Total 497
## Anteil an der Gesamtanzahl Antworten (497)
## anstelle des Medizinstudiums 0.04024145
## berufliche Moeglichkeiten 0.16297787
## Fach/Wissenschaft 0.06036217
## Interesse am Menschen 0.29778672
## Krankheitsbilder 0.15694165
## persoenliche Interessen 0.09657948
## psychosozialer Beruf 0.08249497
## thematisches Interesse 0.03420523
## Zweitausbildung 0.04828974
## Empfehlung durch Andere 0.02012072
## Total 1.00000000
## Anteil an der Anzahl Fälle (189)
## anstelle des Medizinstudiums 0.10582011
## berufliche Moeglichkeiten 0.42857143
## Fach/Wissenschaft 0.15873016
## Interesse am Menschen 0.78306878
## Krankheitsbilder 0.41269841
## persoenliche Interessen 0.25396825
## psychosozialer Beruf 0.21693122
## thematisches Interesse 0.08994709
## Zweitausbildung 0.12698413
## Empfehlung durch Andere 0.05291005
## Total 2.62962963
# Absolute Antworthäufigkeiten (Typ=1)
# Auf die Antworten bezogene relative Häufigkeiten (Typ=2),
# Auf die Fälle bezogene relative Häufigkeiten pro Spalte (Typ=3)
Typ <- 2 # Typ angeben
Tabelle <- tab[-nrow(tab),]
# Balkendiagramm
library(ggplot2)
ggplot(Tabelle, aes(x=factor(rownames(Tabelle),levels=rownames(Tabelle)), y=Tabelle [,Typ])) + geom_bar(colour="black", position="dodge", stat="identity", fill="grey") + xlab(Setvariable) + ylab(names(Tabelle)[Typ]) + theme_bw() + theme(axis.text.x = element_text(angle=90, hjust=1))
# Horizontale Beschriftung: + theme(axis.text.x ... weglassen
# Liniendiagramm
ggplot(Tabelle, aes(x=factor(rownames(Tabelle),levels=rownames(Tabelle)), y=Tabelle [,Typ], group=1)) + geom_line(size=0.8) + geom_point(size=3) + geom_point(size=1, colour="white") + xlab(Setvariable) + ylab(names(Tabelle)[Typ]) + theme_bw() + ylim(0, NA) + theme(axis.text.x = element_text(angle=90, hjust=1))
# Horizontale Beschriftung: "+ theme(axis.text.x ..." weglassen
Wichtig: Die zu einer Setvariable gehörenden Variablen müssen alle als Faktoren mit denselben Stufenbezeichnungen definiert sein.
Beispiel: Erstellen einer Kreuztabelle “Studiengründe x Basel als Studienort”. Bei jeder dieser beiden Fragen konnten die Probanden maximal drei Antwortalternativen ankreuzen, d.h. für die Kodierung brauchte es je drei Variablen. Um die Kreuztabelle zu erstellen, müssen die drei Variablen (v1_l1, v1_l2, v1_l3) zu der Setvariablen “Studiengründe” und die drei Variablen (v5_l1, v5_l2, v5_l3) zu der Setvariablen “Basel.als.Studienort” zusammengefasst werden. Die Kreuztabelle enthält für jede Kombination der Antwortalternativen der beiden Setvariablen die Wahlhäufigkeit: “Absolute Antworthäufigkeiten”. Aus dieser Tabelle lassen sich Tabellen mit zeilen- oder spaltenweisen relativen Häufigkeiten berechnen. Die zeilenweisen Häufigkeiten kann man entweder an der Anzahl Probanden relativieren, welche die Kategorie der entprechenden Zeile angekreuzt haben “(Häufigkeiten pro Zeilenkategorie)/(Anzahl Fälle pro Zeile)”, oder man kann sie an der Summe der Anzahl Antworten in der entsprechenden Zeile relativieren “(Häufigkeiten pro Zeilenkategorie)/(Anzahl Antworten pro Zeile)”. In den beiden Tabellen stehen die für die Relativierung verwendeten Bezugsrössen in der mit “Total” gekennzeichneten Spalte. Die Anzahl Probanden, welche die Kategorie der entprechenden Zeile angekreuzt haben, ist in der Regel kleiner als die Summe der Anzahl Antworten der entsprechenden Zeile. Wenn alle Probanden die entsprechende Zeilenkatogorie und drei der Spaltenkategorien angekreuzt haben, ist die Summe der Antworten dieser Zeile dreimal so gross wie die Anzahl Probanden. Auf analoge Weise lassen sich spaltenweise relative Häufigkeiten berechnen.
Eine der beteiligten Variablen kann eine Frage betreffen, bei der jeder Proband nur eine Alternativantwort ankreuzen durfte.
library(ggplot2) # Grafik
# Dateneingabe
data <- read.table(file="https://mmi.psycho.unibas.ch/r-toolbox/data/Eingangsfragebogen11.txt", header=TRUE)
num.set1 <- 6:8 # Setvariable 1: Spaltennummern der beteiligten Variablen
num.set2 <- 14:16 # Setvariable 2: Spaltennummern der beteiligten Variablen
Setvariable1 <- "Studiengründe" # Name von Setvariable 1
Setvariable2 <- "Basel.als.Studienort" # Name von Setvariable 2
# Häufigkeitstabellen
# Variablen zu Matrix zusammenfassen
komb.set1 <- data[,num.set1, drop=FALSE]
komb.set2 <- data[,num.set2, drop=FALSE]
lev.set1 <- character(); lev.set2 <- character()
for (i in 1:length(num.set1)) {
komb.set1[,i] <- as.factor(komb.set1[,i])
lev.set1 <- c(lev.set1, levels(komb.set1[,i]))}
for (i in 1:length(num.set2)) {
komb.set2[,i] <- as.factor(komb.set2[,i])
lev.set2 <- c(lev.set2, levels(komb.set2[,i]))}
lev.set1 <- unique(lev.set1) # Vektor mit allen Stufen
n.lev.set1 <- length(lev.set1)
lev.set2 <- unique(lev.set2) # Vektor mit allen Stufen
n.lev.set2 <- length(lev.set2)
# "listwise" deletion
FW <- apply(komb.set1, 1, function(x) sum(is.na(x))==length(num.set1)) + apply(komb.set2, 1, function(x) sum(is.na(x))==length(num.set2))
komb.set1 <- komb.set1[FW!=1,,drop=FALSE]
komb.set2 <- komb.set2[FW!=1,, drop=FALSE]
# Variablenset 1
# 0-1 Matrix generieren
set1 <- matrix(0, nrow=nrow(komb.set1), ncol=n.lev.set1)
for (i in 1:nrow(set1)) set1[i, lev.set1 %in% t(komb.set1[i,])] <- 1
# Variablenset 2
# 0-1 Matrix generieren
set2 <- matrix(0, nrow=nrow(komb.set2), ncol=n.lev.set2)
for (i in 1:nrow(set2)) set2[i, lev.set2 %in% t(komb.set2[i,])] <- 1
# Kreuztabelle mit absoluten Haeufigkeiten
abs.H <- t(set1) %*% set2
abs.H <- as.data.frame(abs.H)
abs.H$Total <- apply(abs.H, 1, sum)
abs.H <- rbind(abs.H, apply(abs.H, 2, sum))
rownames(abs.H) <- c(lev.set1, "Total")
colnames(abs.H) <- c(lev.set2, "Total")
# Relative Haeufigkeiten pro Spalte
# auf Cases bezogen
spaltensumme <- apply(set2, 2, sum)
rel.H1 <- abs.H[, -ncol(abs.H)]
for (i in 1:n.lev.set2) rel.H1[,i] <- rel.H1[,i]/spaltensumme[i]
rel.H1[n.lev.set1+1,] <- spaltensumme
# auf Antworten bezogen
spaltensumme <- as.numeric(abs.H[n.lev.set1+1, -ncol(abs.H)])
rel.H2 <- abs.H[, -ncol(abs.H)]
for (i in 1:n.lev.set2) rel.H2[,i] <- rel.H2[,i]/spaltensumme[i]
rel.H2[n.lev.set1+1,] <- spaltensumme
# Relative Haeufigkeiten pro Zeile
# auf Cases bezogen
zeilensumme <- apply(set1, 2, sum)
rel.H3 <- abs.H[-nrow(abs.H),]
for (i in 1:n.lev.set1) rel.H3[i,] <- rel.H3[i,]/zeilensumme[i]
rel.H3[,n.lev.set2+1] <- zeilensumme
# auf Antworten bezogen
zeilensumme <- as.numeric(abs.H[-nrow(abs.H), n.lev.set2+1])
rel.H4 <- abs.H[-nrow(abs.H),]
for (i in 1:n.lev.set1) rel.H4[i,] <- rel.H4[i,]/zeilensumme[i]
rel.H4[,n.lev.set2+1] <- zeilensumme
list("Absolute Antworthäufigkeiten"=abs.H, "(Häufigkeiten pro Spaltenkategorie)/(Anzahl Fälle pro Spalte)"=rel.H1, "(Häufigkeiten pro Spaltenkategorie)/(Anzahl Antworten pro Spalte)"=rel.H2, "(Häufigkeiten pro Zeilenkategorie)/(Anzahl Fälle pro Zeile)"=rel.H3, "(Häufigkeiten pro Zeilenkategorie)/(Anzahl Antworten pro Zeile)"=rel.H4)
## $`Absolute Antworthäufigkeiten`
## Anerkennung der Matura Basel als Stadt
## anstelle des Medizinstudiums 0 5
## berufliche Moeglichkeiten 1 34
## Fach/Wissenschaft 5 4
## Interesse am Menschen 5 65
## Krankheitsbilder 2 37
## persoenliche Interessen 1 19
## psychosozialer Beruf 3 20
## thematisches Interesse 0 9
## Zweitausbildung 2 7
## Empfehlung durch Andere 0 6
## Total 19 206
## Info ueber Qualitaet keine speziellen Gruende
## anstelle des Medizinstudiums 5 3
## berufliche Moeglichkeiten 18 11
## Fach/Wissenschaft 7 4
## Interesse am Menschen 34 15
## Krankheitsbilder 17 8
## persoenliche Interessen 5 7
## psychosozialer Beruf 17 3
## thematisches Interesse 6 0
## Zweitausbildung 9 1
## Empfehlung durch Andere 4 1
## Total 122 53
## private/finanzielle Gruende Universitaet Basel
## anstelle des Medizinstudiums 13 1
## berufliche Moeglichkeiten 45 18
## Fach/Wissenschaft 13 9
## Interesse am Menschen 83 26
## Krankheitsbilder 50 20
## persoenliche Interessen 29 17
## psychosozialer Beruf 19 3
## thematisches Interesse 10 2
## Zweitausbildung 7 5
## Empfehlung durch Andere 4 1
## Total 273 102
## Total
## anstelle des Medizinstudiums 27
## berufliche Moeglichkeiten 127
## Fach/Wissenschaft 42
## Interesse am Menschen 228
## Krankheitsbilder 134
## persoenliche Interessen 78
## psychosozialer Beruf 65
## thematisches Interesse 27
## Zweitausbildung 31
## Empfehlung durch Andere 16
## Total 775
##
## $`(Häufigkeiten pro Spaltenkategorie)/(Anzahl Fälle pro Spalte)`
## Anerkennung der Matura Basel als Stadt
## anstelle des Medizinstudiums 0.0000000 0.06756757
## berufliche Moeglichkeiten 0.1428571 0.45945946
## Fach/Wissenschaft 0.7142857 0.05405405
## Interesse am Menschen 0.7142857 0.87837838
## Krankheitsbilder 0.2857143 0.50000000
## persoenliche Interessen 0.1428571 0.25675676
## psychosozialer Beruf 0.4285714 0.27027027
## thematisches Interesse 0.0000000 0.12162162
## Zweitausbildung 0.2857143 0.09459459
## Empfehlung durch Andere 0.0000000 0.08108108
## Total 7.0000000 74.00000000
## Info ueber Qualitaet keine speziellen Gruende
## anstelle des Medizinstudiums 0.11111111 0.15
## berufliche Moeglichkeiten 0.40000000 0.55
## Fach/Wissenschaft 0.15555556 0.20
## Interesse am Menschen 0.75555556 0.75
## Krankheitsbilder 0.37777778 0.40
## persoenliche Interessen 0.11111111 0.35
## psychosozialer Beruf 0.37777778 0.15
## thematisches Interesse 0.13333333 0.00
## Zweitausbildung 0.20000000 0.05
## Empfehlung durch Andere 0.08888889 0.05
## Total 45.00000000 20.00
## private/finanzielle Gruende Universitaet Basel
## anstelle des Medizinstudiums 0.12500000 0.02777778
## berufliche Moeglichkeiten 0.43269231 0.50000000
## Fach/Wissenschaft 0.12500000 0.25000000
## Interesse am Menschen 0.79807692 0.72222222
## Krankheitsbilder 0.48076923 0.55555556
## persoenliche Interessen 0.27884615 0.47222222
## psychosozialer Beruf 0.18269231 0.08333333
## thematisches Interesse 0.09615385 0.05555556
## Zweitausbildung 0.06730769 0.13888889
## Empfehlung durch Andere 0.03846154 0.02777778
## Total 104.00000000 36.00000000
##
## $`(Häufigkeiten pro Spaltenkategorie)/(Anzahl Antworten pro Spalte)`
## Anerkennung der Matura Basel als Stadt
## anstelle des Medizinstudiums 0.00000000 0.02427184
## berufliche Moeglichkeiten 0.05263158 0.16504854
## Fach/Wissenschaft 0.26315789 0.01941748
## Interesse am Menschen 0.26315789 0.31553398
## Krankheitsbilder 0.10526316 0.17961165
## persoenliche Interessen 0.05263158 0.09223301
## psychosozialer Beruf 0.15789474 0.09708738
## thematisches Interesse 0.00000000 0.04368932
## Zweitausbildung 0.10526316 0.03398058
## Empfehlung durch Andere 0.00000000 0.02912621
## Total 19.00000000 206.00000000
## Info ueber Qualitaet keine speziellen Gruende
## anstelle des Medizinstudiums 0.04098361 0.05660377
## berufliche Moeglichkeiten 0.14754098 0.20754717
## Fach/Wissenschaft 0.05737705 0.07547170
## Interesse am Menschen 0.27868852 0.28301887
## Krankheitsbilder 0.13934426 0.15094340
## persoenliche Interessen 0.04098361 0.13207547
## psychosozialer Beruf 0.13934426 0.05660377
## thematisches Interesse 0.04918033 0.00000000
## Zweitausbildung 0.07377049 0.01886792
## Empfehlung durch Andere 0.03278689 0.01886792
## Total 122.00000000 53.00000000
## private/finanzielle Gruende Universitaet Basel
## anstelle des Medizinstudiums 0.04761905 9.803922e-03
## berufliche Moeglichkeiten 0.16483516 1.764706e-01
## Fach/Wissenschaft 0.04761905 8.823529e-02
## Interesse am Menschen 0.30402930 2.549020e-01
## Krankheitsbilder 0.18315018 1.960784e-01
## persoenliche Interessen 0.10622711 1.666667e-01
## psychosozialer Beruf 0.06959707 2.941176e-02
## thematisches Interesse 0.03663004 1.960784e-02
## Zweitausbildung 0.02564103 4.901961e-02
## Empfehlung durch Andere 0.01465201 9.803922e-03
## Total 273.00000000 1.020000e+02
##
## $`(Häufigkeiten pro Zeilenkategorie)/(Anzahl Fälle pro Zeile)`
## Anerkennung der Matura Basel als Stadt
## anstelle des Medizinstudiums 0.00000000 0.2500000
## berufliche Moeglichkeiten 0.01315789 0.4473684
## Fach/Wissenschaft 0.19230769 0.1538462
## Interesse am Menschen 0.03571429 0.4642857
## Krankheitsbilder 0.02631579 0.4868421
## persoenliche Interessen 0.02173913 0.4130435
## psychosozialer Beruf 0.07894737 0.5263158
## thematisches Interesse 0.00000000 0.6000000
## Zweitausbildung 0.10000000 0.3500000
## Empfehlung durch Andere 0.00000000 0.6000000
## Info ueber Qualitaet keine speziellen Gruende
## anstelle des Medizinstudiums 0.2500000 0.15000000
## berufliche Moeglichkeiten 0.2368421 0.14473684
## Fach/Wissenschaft 0.2692308 0.15384615
## Interesse am Menschen 0.2428571 0.10714286
## Krankheitsbilder 0.2236842 0.10526316
## persoenliche Interessen 0.1086957 0.15217391
## psychosozialer Beruf 0.4473684 0.07894737
## thematisches Interesse 0.4000000 0.00000000
## Zweitausbildung 0.4500000 0.05000000
## Empfehlung durch Andere 0.4000000 0.10000000
## private/finanzielle Gruende Universitaet Basel
## anstelle des Medizinstudiums 0.6500000 0.05000000
## berufliche Moeglichkeiten 0.5921053 0.23684211
## Fach/Wissenschaft 0.5000000 0.34615385
## Interesse am Menschen 0.5928571 0.18571429
## Krankheitsbilder 0.6578947 0.26315789
## persoenliche Interessen 0.6304348 0.36956522
## psychosozialer Beruf 0.5000000 0.07894737
## thematisches Interesse 0.6666667 0.13333333
## Zweitausbildung 0.3500000 0.25000000
## Empfehlung durch Andere 0.4000000 0.10000000
## Total
## anstelle des Medizinstudiums 20
## berufliche Moeglichkeiten 76
## Fach/Wissenschaft 26
## Interesse am Menschen 140
## Krankheitsbilder 76
## persoenliche Interessen 46
## psychosozialer Beruf 38
## thematisches Interesse 15
## Zweitausbildung 20
## Empfehlung durch Andere 10
##
## $`(Häufigkeiten pro Zeilenkategorie)/(Anzahl Antworten pro Zeile)`
## Anerkennung der Matura Basel als Stadt
## anstelle des Medizinstudiums 0.000000000 0.1851852
## berufliche Moeglichkeiten 0.007874016 0.2677165
## Fach/Wissenschaft 0.119047619 0.0952381
## Interesse am Menschen 0.021929825 0.2850877
## Krankheitsbilder 0.014925373 0.2761194
## persoenliche Interessen 0.012820513 0.2435897
## psychosozialer Beruf 0.046153846 0.3076923
## thematisches Interesse 0.000000000 0.3333333
## Zweitausbildung 0.064516129 0.2258065
## Empfehlung durch Andere 0.000000000 0.3750000
## Info ueber Qualitaet keine speziellen Gruende
## anstelle des Medizinstudiums 0.18518519 0.11111111
## berufliche Moeglichkeiten 0.14173228 0.08661417
## Fach/Wissenschaft 0.16666667 0.09523810
## Interesse am Menschen 0.14912281 0.06578947
## Krankheitsbilder 0.12686567 0.05970149
## persoenliche Interessen 0.06410256 0.08974359
## psychosozialer Beruf 0.26153846 0.04615385
## thematisches Interesse 0.22222222 0.00000000
## Zweitausbildung 0.29032258 0.03225806
## Empfehlung durch Andere 0.25000000 0.06250000
## private/finanzielle Gruende Universitaet Basel
## anstelle des Medizinstudiums 0.4814815 0.03703704
## berufliche Moeglichkeiten 0.3543307 0.14173228
## Fach/Wissenschaft 0.3095238 0.21428571
## Interesse am Menschen 0.3640351 0.11403509
## Krankheitsbilder 0.3731343 0.14925373
## persoenliche Interessen 0.3717949 0.21794872
## psychosozialer Beruf 0.2923077 0.04615385
## thematisches Interesse 0.3703704 0.07407407
## Zweitausbildung 0.2258065 0.16129032
## Empfehlung durch Andere 0.2500000 0.06250000
## Total
## anstelle des Medizinstudiums 27
## berufliche Moeglichkeiten 127
## Fach/Wissenschaft 42
## Interesse am Menschen 228
## Krankheitsbilder 134
## persoenliche Interessen 78
## psychosozialer Beruf 65
## thematisches Interesse 27
## Zweitausbildung 31
## Empfehlung durch Andere 16
# Absolute Antworthäufigkeiten (Typ=1)
# (Häufigkeiten pro Spaltenkategorie)/(Anzahl Fälle pro Spalte) (Typ=2)
# (Häufigkeiten pro Spaltenkategorie)/(Anzahl Antworten pro Spalte) (Typ=3)
# (Häufigkeiten pro Zeilenkategorie)/(Anzahl Fälle pro Zeile) (Typ=4)
# (Häufigkeiten pro Zeilenkategorie)/(Anzahl Antworten pro Zeile) (Typ=5)
Typ <- 1 # Typ angeben
if (Typ==1) {
Tabelle <- abs.H[-nrow(abs.H),-ncol(abs.H)]
y.achse <- "absolute Häufigkeiten"
titel <- "Absolute Antworthäufigkeiten"
} else if (Typ==2) {
Tabelle <- rel.H1[-nrow(rel.H1),]
y.achse <- "relative Häufigkeiten"
titel <- "(Häufigkeiten pro Spaltenkategorie)/(Anzahl Fälle pro Spalte)"
} else if (Typ==3) {
Tabelle <- rel.H2[-nrow(rel.H2),]
y.achse <- "relative Häufigkeiten"
titel <- "(Häufigkeiten pro Spaltenkategorie)/(Anzahl Antworten pro Spalte)"
} else if (Typ==4) {
Tabelle <- rel.H3[,-ncol(rel.H3)]
y.achse <- "relative Häufigkeiten"
titel <- "(Häufigkeiten pro Zeilenkategorie)/(Anzahl Fälle pro Zeile)"
} else {
Tabelle <- rel.H4[,-ncol(rel.H4)]
y.achse <- "relative Häufigkeiten"
titel <- "(Häufigkeiten pro Zeilenkategorie)/(Anzahl Antworten pro Zeile)"}
data2 <- data.frame(as.table(as.matrix(Tabelle)))
names(data2)[1:2] <- c(Setvariable1,Setvariable2)
library(ggplot2)
# Balkendiagramm
# Schwarzweiss
ggplot(data=data2, aes_string(x=Setvariable1, y="Freq", fill=Setvariable2)) + geom_bar(colour="black", position="dodge", stat="identity") + scale_fill_grey(start=0, end=.9) + ylab(y.achse) + ggtitle(titel) + theme_bw() + theme(axis.text.x = element_text(angle=90, hjust=1), plot.title = element_text(size=11))
# Horizontale Beschriftung: "axis.text.x = element_text(angle=90, hjust=1)" weglassen
# Farbige Version
ggplot(data=data2, aes_string(x=Setvariable1, y="Freq", fill=Setvariable2)) + geom_bar(colour="black", position="dodge", stat="identity") + ylab(y.achse) + ggtitle(titel) + theme_grey() + theme(axis.text.x = element_text(angle=90, hjust=1), plot.title = element_text(size=11))
# Horizontale Beschriftung: "axis.text.x = element_text(angle=90, hjust=1)" weglassen
# Liniendiagramm
# Schwarzweiss
ggplot(data=data2, aes_string(x=Setvariable1, y="Freq", group=Setvariable2, shape=Setvariable2)) + geom_line(size=0.8) + geom_point(size=3) + ylab(y.achse) + ggtitle(titel) + theme_bw() + ylim(0, NA) + theme(axis.text.x = element_text(angle=90, hjust=1), plot.title = element_text(size=11))
# Horizontale Beschriftung: "+ theme(axis.text.x ..." weglassen
# Farbige Version
ggplot(data=data2, aes_string(x=Setvariable1, y="Freq", group=Setvariable2, colour=Setvariable2)) + geom_line(size=0.8) + ylab(y.achse) + ggtitle(titel) + theme_grey() + ylim(0, NA) + theme(axis.text.x = element_text(angle=90, hjust=1), plot.title = element_text(size=11))
# Horizontale Beschriftung: "axis.text.x = element_text(angle=90, hjust=1)" weglassen