Umfrage <- read.table("Umfragedaten.txt")
str(Umfrage)
'data.frame': 3471 obs. of 17 variables:
$ ID : int 1359 2455 200 1280 2384 2258 837 1343 3129 2961 ...
$ GESCHL : Factor w/ 2 levels "MAENNLICH","WEIBLICH": 2 2 1 1 2 1 1 1 1 2 ...
$ GEBJAHR : int 1967 1964 1980 1968 1995 1992 1967 1989 1960 1952 ...
$ BERUFSTAETIG : Factor w/ 4 levels "HAUPTBERUFL.GANZTAGS",..: 4 2 4 1 4 2 1 3 1 2 ...
$ ARBEITSSTD : num NA 30 NA 50 NA 13 47 NA 37 30 ...
$ ARZTBES : int 1 1 3 0 1 0 0 1 0 4 ...
$ RAUCH : Factor w/ 2 levels "JA","NEIN": 1 2 2 2 2 2 2 2 2 2 ...
$ GRO : int 162 165 166 180 161 187 194 173 175 170 ...
$ GEW : int 79 59 86 95 46 93 96 70 85 110 ...
$ SCHULABSCHLUSS : Factor w/ 7 levels "ANDERER ABSCHLUSS",..: 4 4 3 2 5 2 1 7 7 2 ...
$ SCHULABSCHLUSS_V: Factor w/ 6 levels "ANDERER ABSCHLUSS",..: 4 6 3 4 4 NA 6 5 6 6 ...
$ SCHULABSCHLUSS_M: Factor w/ 6 levels "ANDERER ABSCHLUSS",..: 3 6 3 4 6 NA 6 5 6 6 ...
$ HOE_ABSCHLUSS : Factor w/ 7 levels "ANDERER ABSCHLUSS",..: 5 5 3 2 7 4 6 4 5 3 ...
$ HOE_ABSCHLUSS_V : Factor w/ 7 levels "ANDERER ABSCHLUSS",..: 3 7 4 5 3 NA 3 6 3 3 ...
$ HOE_ABSCHLUSS_M : Factor w/ 7 levels "ANDERER ABSCHLUSS",..: 7 5 4 5 3 NA 6 5 5 5 ...
$ NETTO : int 475 780 NA NA NA NA 4000 400 1100 2000 ...
$ ZUFR : int 10 9 8 8 7 9 8 9 8 8 ...
l <- ncol(Umfrage)
b <- nrow(Umfrage)
logger::log_info("Anzahl Merkmale: {l}")
INFO [2019-03-09 14:47:29] Anzahl Merkmale: 17
logger::log_info("Anzahl Beobachtungen: {b}")
INFO [2019-03-09 14:47:29] Anzahl Beobachtungen: 3471
names(Umfrage)
[1] "ID" "GESCHL" "GEBJAHR" "BERUFSTAETIG" "ARBEITSSTD" "ARZTBES"
[7] "RAUCH" "GRO" "GEW" "SCHULABSCHLUSS" "SCHULABSCHLUSS_V" "SCHULABSCHLUSS_M"
[13] "HOE_ABSCHLUSS" "HOE_ABSCHLUSS_V" "HOE_ABSCHLUSS_M" "NETTO" "ZUFR"
head(Umfrage, 10)
Was genau ist ein Skalenniveau?
sum(is.na(Umfrage$GEW))
[1] 44
Mittelwert <- mean(Umfrage$ARBEITSSTD, na.rm = T)
Median <- median(Umfrage$ARBEITSSTD, na.rm = T)
Diff <- abs(Mittelwert - Median);
logger::log_info("Die Differenz zwischen Mittelwert ({Mittelwert}) und Median ({Median}) beträgt {Diff}")
INFO [2019-03-09 14:47:29] Die Differenz zwischen Mittelwert (40.2411764705882) und Median (40) beträgt 0.241176470588236
sum(Umfrage$SCHULABSCHLUSS_M == 'HOCHSCHULREIFE', na.rm = T)
[1] 282
barchart(Umfrage$RAUCH, main = 'Rauchen Sie?', sub = 'Die Raucher sind in der Minderheit')
Bestlohn = max(Umfrage$NETTO, na.rm = T);
AnzahlBestverdiener = sum(Umfrage$NETTO == Bestlohn, na.rm = T)
logger::log_info("Es gibt {AnzahlBestverdiener} Bestverdiener mit {Bestlohn}.-- Netto")
INFO [2019-03-09 14:47:30] Es gibt 2 Bestverdiener mit 60000.-- Netto
WerBestlohn = which(Umfrage$NETTO == Bestlohn)
GenderBestlohn = Umfrage[WerBestlohn,]$GESCHL
plot(GenderBestlohn, ylim=c(0,2), yaxt = 'n', main="Genderfrage: Wer ist unter den Bestverdienern?")
axis(side=2, at=c(0:2))
Umfrage[4,]
Stunden6Person <- Umfrage$ARBEITSSTD[6]
logger::log_info("Die 6. Person arbeitet {Stunden6Person} Stunden")
INFO [2019-03-09 14:47:30] Die 6. Person arbeitet 13 Stunden
ZufrAnpassung = c(2,3,4,5)
select(Umfrage[ZufrAnpassung,], ID, ZUFR, GESCHL, GEBJAHR, ARZTBES)
Umfrage$ZUFR[ZufrAnpassung] <- c(8,9,10,6)
select(Umfrage[ZufrAnpassung,], ID, ZUFR, GESCHL, GEBJAHR, ARZTBES)
IndexColBenennung = which(colnames(Umfrage) == 'GEBJAHR')
colnames(Umfrage)[IndexColBenennung] <- 'JAHRGANG'
colnames(Umfrage)
[1] "ID" "GESCHL" "JAHRGANG" "BERUFSTAETIG" "ARBEITSSTD" "ARZTBES"
[7] "RAUCH" "GRO" "GEW" "SCHULABSCHLUSS" "SCHULABSCHLUSS_V" "SCHULABSCHLUSS_M"
[13] "HOE_ABSCHLUSS" "HOE_ABSCHLUSS_V" "HOE_ABSCHLUSS_M" "NETTO" "ZUFR"
logger::log_info("Das Merkmal GEBJAHR wurde auf JAHRGANG geändert.")
INFO [2019-03-09 14:47:30] Das Merkmal GEBJAHR wurde auf JAHRGANG geändert.
Zufriedenheit <- table(Umfrage$ZUFR, Umfrage$GESCHL)
barchart(Zufriedenheit, main = 'Zufriedenheit Kummuliert', xlab = 'Anzahl Befragte', ylab = 'Zufriedenheit')
barchart(Zufriedenheit, main = 'Zufriedenheit mit Unterscheidung m/w', xlab = 'Anzahl Befragte', ylab = 'Zufriedenheit', groups = F)
Hier stellt sich die Frage, wie stellen wir diese Werte am sprechendsten dar?
ZufriedenheitR <- table(Umfrage$ZUFR, Umfrage$RAUCH, Umfrage$GESCHL)
plot(ZufriedenheitR)
GeteiltRaucher <- subset(Umfrage, RAUCH == 'JA')
GeteiltNichtraucher <- setdiff(Umfrage, GeteiltRaucher)
logger::log_info("Datensatz mit total {nrow(Umfrage)} Einträgen geteilt in Raucher ({nrow(GeteiltRaucher)}) und alle anderen ({nrow(GeteiltNichtraucher)})")
INFO [2019-03-09 14:47:30] Datensatz mit total 3471 Einträgen geteilt in Raucher (1018) und alle anderen (2453)
ZufriedeneFrauen <- subset(Umfrage, GESCHL == 'WEIBLICH' & ZUFR > 8)
logger::log_info("{nrow(ZufriedeneFrauen)} Frauen sind sehr zufrieden.")
INFO [2019-03-09 14:47:30] 463 Frauen sind sehr zufrieden.
Umfrage.neu <- rbind(Umfrage, Umfrage[c(2,4,6),])
!sum(Umfrage.neu[2,] != Umfrage.neu[3472,])
[1] TRUE
IndexDuplikate = which(duplicated(Umfrage.neu))
logger::log_info("Duplikat gefunden an Position {IndexDuplikate}")
INFO [2019-03-09 14:47:31] Duplikat gefunden an Position 3472
INFO [2019-03-09 14:47:31] Duplikat gefunden an Position 3473
INFO [2019-03-09 14:47:31] Duplikat gefunden an Position 3474
Umfrage.neu <- unique(Umfrage.neu)
if (sum(duplicated(Umfrage.neu))) {
logger::log_info("Noch Duplikat vorhanden: {which(duplicated(Umfrage.neu))}")
} else {
logger::log_info("Keine Duplikate mehr")
}
INFO [2019-03-09 14:47:31] Keine Duplikate mehr
MerkmaleNA <- names(Umfrage[colSums(is.na(Umfrage)) > 0])
logger::log_info("Merkmal mit NA: {MerkmaleNA}")
INFO [2019-03-09 14:47:31] Merkmal mit NA: JAHRGANG
INFO [2019-03-09 14:47:31] Merkmal mit NA: BERUFSTAETIG
INFO [2019-03-09 14:47:31] Merkmal mit NA: ARBEITSSTD
INFO [2019-03-09 14:47:31] Merkmal mit NA: ARZTBES
INFO [2019-03-09 14:47:31] Merkmal mit NA: RAUCH
INFO [2019-03-09 14:47:31] Merkmal mit NA: GRO
INFO [2019-03-09 14:47:31] Merkmal mit NA: GEW
INFO [2019-03-09 14:47:31] Merkmal mit NA: SCHULABSCHLUSS
INFO [2019-03-09 14:47:31] Merkmal mit NA: SCHULABSCHLUSS_V
INFO [2019-03-09 14:47:31] Merkmal mit NA: SCHULABSCHLUSS_M
INFO [2019-03-09 14:47:31] Merkmal mit NA: HOE_ABSCHLUSS
INFO [2019-03-09 14:47:31] Merkmal mit NA: HOE_ABSCHLUSS_V
INFO [2019-03-09 14:47:31] Merkmal mit NA: HOE_ABSCHLUSS_M
INFO [2019-03-09 14:47:31] Merkmal mit NA: NETTO
INFO [2019-03-09 14:47:31] Merkmal mit NA: ZUFR
BeobachtungenNA <- Umfrage[rowSums(is.na(Umfrage)) > 0,]
logger::log_info("Total {nrow(BeobachtungenNA)} Beobachtungen mit mindestens einem NA")
INFO [2019-03-09 14:47:31] Total 2209 Beobachtungen mit mindestens einem NA
Vollständig <- subset(Umfrage, rowSums(is.na(Umfrage)) == 0)
logger::log_info("Neues Subset mit {nrow(Vollständig)} vollständigen Beobachtungen")
INFO [2019-03-09 14:47:31] Neues Subset mit 1262 vollständigen Beobachtungen
Unvollständig <- subset(Umfrage, rowSums(is.na(Umfrage)) > 0)
logger::log_info("Neues Subset mit {nrow(Unvollständig)} unvollständigen Beobachtungen")
INFO [2019-03-09 14:47:31] Neues Subset mit 2209 unvollständigen Beobachtungen
Rauchersplit <- split(Umfrage, Umfrage$RAUCH)
Rauchersplit
$JA
$NEIN
NA
#KombiFaktor <- paste(Umfrage$RAUCH, Umfrage$GESCHL)
#KombiFaktor
#RaucherGenderSplit <- split(Umfrage, KombiFaktor)
#RaucherGenderSplit
Liste <- list(Umfrage$RAUCH, Umfrage$GESCHL)
RaucherGenderSplit <- split(Umfrage, list(Umfrage$RAUCH, Umfrage$GESCHL))
ZufriedenheitMittelwert <- tapply(Umfrage$ZUFR, Umfrage$GESCHL, mean, na.rm = T)
ZufriedenheitMittelwert
MAENNLICH WEIBLICH
7.627778 7.478391
logger::log_info("Zufriedenheits-Mittelwert {names(ZufriedenheitMittelwert)}: {ZufriedenheitMittelwert}")
INFO [2019-03-09 14:47:32] Zufriedenheits-Mittelwert MAENNLICH: 7.62777777777778
INFO [2019-03-09 14:47:32] Zufriedenheits-Mittelwert WEIBLICH: 7.47839135654262