Commit 8061631b by O'Reilly Media, Inc.

Initial commit

parents
# ====================================================================
# R in a Nutshell (1. Aufl., Dez. 2010)
# Kapitel 12 -- Daten speichern, laden und bearbeiten
# *** Perl 5-Code ***
#
# Zeichenkodierung: UTF-8
# Schnappschuss : 2011-01-25 20:11:53 h
# angelegt von : Jörg Beyer
# ====================================================================
#!/usr/bin/perl
#
# Skript zum Aufbereiten (und Filtern) der US-Sterbestatistik 2006
#
use strict;
my $leer = qr/^ +$/;
my $spaltenTrenner = ";";
my $spaltenLayout = join('', qw(
a19 a1 a40 a2 a1 a1 a2 a2 a1 a4 a1 a2 a2 a2 a2
a1 a1 a1 a16 a4 a1 a1 a1 a1 a34 a1 a1 a4 a3 a1
a3 a3 a2 a283 a2 a1 a1 a1 a1 a33 a3 a1 a1 ));
# Spaltennamen im CSV-Format montieren und ausgeben
print join($spaltenTrenner, qw(
EinwohnerStatus Bildung.KL1989 Bildung.KL2003 BildungsCode
Tod.Monat Geschlecht Alter.exakt Alter.ersetzt Alter.Kl52
Alter.Kl27 Alter.Kl12 Alter.Kinder.Kl22 TodesOrt
Zivilstand Tod.Wochentag Datensatz.Jahr ArbeitsUnfall
TodesUrsache BestattungsArt Autopsie TätigkeitsArt
UnfallOrt ICD.Code Ursache.Kl358 Ursache.Kl113
Ursache.Kl130 Ursache.Kl39 Ethnizität Ethn.synchr
Ethn.Imputation Ethn.Kl3 Ethn.Kl5 Ethn.LatAm
Ethn.LatAm.Kl )) . "\n";
# Schleife über die Datenzeilen
while(<>) {
# Zeile/Datensatz in Spalten aufbrechen
my ($X0, $EinwohnerStatus, $X1, $BildungKL1989, $BildungKL2003,
$BildungsCode, $TodMonat, $X5, $Geschlecht, $AlterExakt,
$AlterErsetzt, $AlterKl52, $AlterKl27, $AlterKl12,
$AlterKinderKl22, $TodesOrt, $Zivilstand, $TodWochentag,
$X15, $DatensatzJahr, $ArbeitsUnfall, $TodesUrsache,
$BestattungsArt, $Autopsie, $X20, $TaetigkeitsArt, $UnfallOrt,
$ICDCode, $UrsacheKl358, $X24, $UrsacheKl113, $UrsacheKl130,
$UrsacheKl39, $X27, $Ethnizitaet, $EthnSynchr, $EthnImputation,
$EthnKl3, $EthnKl5, $X32, $EthnLatAm, $X33, $EthnLatAmKl)
= unpack( $spaltenLayout, $_ );
# "Leercodes" in den Daten rekodieren, um falsche NAs zu vermeiden
$BildungKL2003 = '0' if ($BildungKL2003 =~ m/$leer/);
$AlterErsetzt = '0' if ($AlterErsetzt =~ m/$leer/);
$AlterKinderKl22 = '99' if ($AlterKinderKl22 =~ m/$leer/);
$TodesUrsache = '9' if ($TodesUrsache =~ m/$leer/);
$TaetigkeitsArt = '99' if ($TaetigkeitsArt =~ m/$leer/);
$UnfallOrt = '99' if ($UnfallOrt =~ m/$leer/);
$EthnSynchr = '0' if ($EthnSynchr =~ m/$leer/);
$EthnImputation = '0' if ($EthnImputation =~ m/$leer/);
# Datensatz im CSV-Format montieren und ausgeben
print join($spaltenTrenner,
$EinwohnerStatus, $BildungKL1989, $BildungKL2003,
$BildungsCode, $TodMonat, $Geschlecht, $AlterExakt,
$AlterErsetzt, $AlterKl52, $AlterKl27, $AlterKl12,
$AlterKinderKl22, $TodesOrt, $Zivilstand, $TodWochentag,
$DatensatzJahr, $ArbeitsUnfall, $TodesUrsache,
$BestattungsArt, $Autopsie, $TaetigkeitsArt, $UnfallOrt,
$ICDCode, $UrsacheKl358, $UrsacheKl113, $UrsacheKl130,
$UrsacheKl39, $Ethnizitaet, $EthnSynchr, $EthnImputation,
$EthnKl3, $EthnKl5, $EthnLatAm, $EthnLatAmKl) . "\n";
}
# ====================================================================
# ====================================================================
# R in a Nutshell (1. Aufl., Dez. 2010)
# Kapitel 15 -- Trellis-Grafik mit Lattice
# *** Perl 5-Code ***
#
# Zeichenkodierung: UTF-8
# Schnappschuss : 2011-01-25 20:11:53 h
# angelegt von : Jörg Beyer
# ====================================================================
#!/usr/bin/perl
#
# Skript zum Aufbereiten (und Filtern) der US-Geburtenstatistik 2006
#
use strict;
my $leer = qr/^ +$/;
my $spaltenTrenner = ";";
my $spaltenLayout = join('', qw(
a18 a2 a8 a1 a59 a2 a65 a2 a59 a1 a52 a2 a4 a2 a125
a1 a11 a2 a6 a1 a12 a1 a9 a2 a15 a4 ));
# Spaltennamen im CSV-Format montieren und ausgeben
print join($spaltenTrenner, qw(
Geburt.Monat Geburt.Wtag Mutter.Alter Geburten.gesamt
Mutter.Zunahme Geschlecht Apgar5 Mutter.Bildung
PränatalDiagn Schwangerschaft Entbindung
AnzahlSäuglinge Geburtsgewicht )) . "\n";
# Schleife über die Datenzeilen
while(<>) {
# Zeile/Datensatz in Spalten aufbrechen
my ($X1, $GeburtMonat, $X2, $GeburtWtag, $X3, $MutterAlter, $X4,
$MutterBildung, $X5, $Geburtengesamt, $X6, $PraenatalDiagn,
$X7, $MutterZunahme, $X8, $Entbindung, $X9, $Apgar5, $X10,
$AnzahlSaeuglinge, $X11, $Geschlecht, $X12, $Schwangerschaft,
$X13, $Geburtsgewicht)
= unpack( $spaltenLayout, $_ );
# "Leercodes" in den Daten rekodieren, um falsche NAs zu vermeiden
$MutterBildung = '98' if ($MutterBildung =~ m/$leer/);
# Datensatz im CSV-Format montieren und ausgeben
print join($spaltenTrenner,
$GeburtMonat, $GeburtWtag, $MutterAlter, $Geburtengesamt,
$MutterZunahme, $Geschlecht, $Apgar5, $MutterBildung,
$PraenatalDiagn, $Schwangerschaft, $Entbindung,
$AnzahlSaeuglinge, $Geburtsgewicht) . "\n";
}
# ====================================================================
# ====================================================================
# R in a Nutshell (1. Aufl., Dez. 2010)
# Kapitel 00 -- Vorwort
# *** R-Code ***
#
# Zeichenkodierung: UTF-8
# Schnappschuss : 2011-01-25 20:11:53 h
# angelegt von : Jörg Beyer
# ====================================================================
# Bitte zuerst Datei herunterladen (und ggf. Pfadnamen anpassen)
# Installation der Begleitdaten zum Buch aus dem Quelltext
install.packages("~/Downloads/nutshellDE_1.0-0.tar.gz",
repos = NULL, type = "source", clean = TRUE)
# ====================================================================
# ====================================================================
# R in a Nutshell (1. Aufl., Dez. 2010)
# Kapitel 02 -- Die R-Benutzerschnittstelle
# *** R-Code ***
#
# Zeichenkodierung: UTF-8
# Schnappschuss : 2011-01-25 20:11:53 h
# angelegt von : Jörg Beyer
# ====================================================================
17 + 3
# --------------------------------------------------------------------
1 * 2 * 3 * 4 * 5 *
6 * 7 * 8 * 9 * 10
# --------------------------------------------------------------------
# die folgende Anweisung in R installiert den RExcel-Installer
# sowie weitere für RExcel benötigte Pakete
install.packages(c("rsproxy", "rcom", "RExcelInstaller"))
# die folgenden Anweisungen konfigurieren das Paket rcom
# und starten die Installation von RDCOM
library(rcom)
installstatconnDCOM()
dummy <- comRegisterRegistry()
# die folgenden Anweisungen starten die Installation von REXCEL
library(RExcelInstaller)
installRExcel()
# ====================================================================
# ====================================================================
# R in a Nutshell (1. Aufl., Dez. 2010)
# Kapitel 03 -- Kurzeinführung in R
# *** R-Code ***
#
# Zeichenkodierung: UTF-8
# Schnappschuss : 2011-01-25 20:11:53 h
# angelegt von : Jörg Beyer
# ====================================================================
1 + 2 + 3
1 + 2 * 3
(1 + 2) * 3
# --------------------------------------------------------------------
c(0, 1, 1, 2, 3, 5, 8)
# --------------------------------------------------------------------
1:50
# --------------------------------------------------------------------
c(1, 2, 3, 4) + c(10, 20, 30, 40)
c(1, 2, 3, 4) * c(10, 20, 30, 40)
c(1, 2, 3, 4) - c(1, 1, 1, 1)
# --------------------------------------------------------------------
c(1, 2, 3, 4) + 1 ### "... + 1" ist identisch mit "... + c(1)"!
1 / c(1, 2, 3, 4, 5)
c(1, 2, 3, 4) + c(10, 100)
c(1, 2, 3, 4, 5) + c(10, 100)
# --------------------------------------------------------------------
"Hallo, Welt!"
# --------------------------------------------------------------------
c("Hallo, Welt!", "Hallo, R-Interpreter!")
# --------------------------------------------------------------------
# Beispiel für einen Kommentar am Beginn einer neuen Zeile
1 + 2 + ### und ein Beispiel für einen Kommentar mitten in der Eingabe
3
# --------------------------------------------------------------------
exp(1)
cos(3.141593)
log2(1)
# --------------------------------------------------------------------
log(x = 64, base = 4)
# --------------------------------------------------------------------
log(64, 4)
# --------------------------------------------------------------------
17 + 2
2^10
3 == 4
# --------------------------------------------------------------------
x <- 1
# --------------------------------------------------------------------
x <- 1
y <- 2
z <- c(x, y)
# jetzt z auswerten, um nachzusehen, was darin gespeichert ist
z
# --------------------------------------------------------------------
y <- 4
z
# --------------------------------------------------------------------
b <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
b
# das 7. Element aus Vektor b holen
b[7]
# die Elemente 1 bis 6 auslesen
b[1:6]
# nur Elemente auslesen, deren Position ein Vielfaches von 3 ist
# (mathematisch gesprochen, wenn der Divisionsrest der Position
# für den Teiler 3 gleich 0 ist...)
b[seq(1:length(b)) %% 3 == 0]
# --------------------------------------------------------------------
# Elemente 1 bis 6 auslesen
b[c(1:6)]
# Elemente 1, 6 und 11 auslesen
b[c(1, 6, 11)]
# --------------------------------------------------------------------
b[c(8, 4, 9)]
# --------------------------------------------------------------------
b %% 3 == 0
b[b %% 3 == 0]
# --------------------------------------------------------------------
Eins <- 1
Zwei <- 2
# das hier heißt: der Variablen "Eins" wird der Wert von "Zwei" zugewiesen
Eins = Zwei
Eins
Zwei
# noch mal von vorn
Eins <- 1
Zwei <- 2
# das hier heißt: Entspricht der Wert von "Eins" dem von "Zwei"?
Eins == Zwei
# --------------------------------------------------------------------
3 -> Drei
Drei
# --------------------------------------------------------------------
plusEins <- function(x, y) {c(x + 1, y + 1)}
plusEins(1, 2)
# --------------------------------------------------------------------
plusEins
# --------------------------------------------------------------------
a <- array(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), dim = c(3, 4))
# --------------------------------------------------------------------
a
# --------------------------------------------------------------------
a[2, 2]
# --------------------------------------------------------------------
v <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
v
# --------------------------------------------------------------------
m <- matrix(data = c(1:12), nrow = 3, ncol = 4)
m
# --------------------------------------------------------------------
DreiD <- array(c(1:18), dim = c(3, 3, 2))
DreiD
DreiD[1, 1, 1]
# --------------------------------------------------------------------
a[1, 2]
a[1:2, 1:2]
# --------------------------------------------------------------------
# nur die erste Zeile
a[1, ]
# nur die erste Spalte
a[ ,1]
# auch einen Zeilenbereich können Sie adressieren
a[1:2, ]
# Sie können sogar unzusammenhängende Zeilen zusammenstellen
a[c(1, 3), ]
# --------------------------------------------------------------------
# Eine Liste, die eine Zahl und einen String enthält
e <- list(Gegenstand = "Fedora", Größe = 64)
e
# --------------------------------------------------------------------
e$Gegenstand
e[1]
e[[1]]
# --------------------------------------------------------------------
g <- list("Diese Liste enthält eine andere Liste", e)
g
# --------------------------------------------------------------------
Team <- c("PHI", "NYM", "FLA", "ATL", "WSN")
S <- c(92, 89, 94, 72, 59)
N <- c(70, 73, 77, 90, 102)
NL.East <- data.frame(Team, S, N)
NL.East
# --------------------------------------------------------------------
# Spalte mit den Niederlagen ("N")
NL.East$N
# --------------------------------------------------------------------
NL.East$Team == "FLA"
# --------------------------------------------------------------------
NL.East$N[NL.East$Team == "FLA"]
# --------------------------------------------------------------------
class(Team)
class(NL.East)
class(NL.East$N)
class(class)
# --------------------------------------------------------------------
17 + 6
# --------------------------------------------------------------------
as.Date("2010-10-10") + 7
# --------------------------------------------------------------------
x <- 1 + 2 + 3 + 4
# --------------------------------------------------------------------
x
# --------------------------------------------------------------------
data(cars)
LM.Autos <- lm(formula = dist ~ speed, data = cars)
# --------------------------------------------------------------------
LM.Autos
# --------------------------------------------------------------------
summary(LM.Autos)
# --------------------------------------------------------------------
lm(dist ~ speed, data = cars)
summary(lm(dist ~ speed, data = cars))
# --------------------------------------------------------------------
library(nutshellDE)
data(Field.Goals)
# --------------------------------------------------------------------
colnames(Field.Goals)
# --------------------------------------------------------------------
hist(Field.Goals$Yards)
# --------------------------------------------------------------------
hist(Field.Goals$Yards, breaks = 35)
# --------------------------------------------------------------------
table(Field.Goals$Spielzug)
# --------------------------------------------------------------------
Field.Goals.geblockt <- Field.Goals$Spielzug == "FG geblockt"
stripchart(Field.Goals[ Field.Goals.geblockt, ]$Yards,
pch = 19, method = "jitter")
# --------------------------------------------------------------------
data(cars)
dim(cars)
colnames(cars)
# --------------------------------------------------------------------
summary(cars)
# --------------------------------------------------------------------
plot(cars, xlim = c(0, 25), las = 1,
xlab = "Spitzengeschwindigkeit (mph)",
ylab = "Reichweite (ft)")
# --------------------------------------------------------------------
library(lattice)
# --------------------------------------------------------------------
library(lattice)
data(Verzehr)
dotplot(Menge ~ Jahr | Nahrungsmittel, data = Verzehr)
# --------------------------------------------------------------------
dotplot(Menge ~ Jahr | Nahrungsmittel, data = Verzehr,
scales = list(relation = "sliced", cex = 0.4),
aspect = "xy")
# --------------------------------------------------------------------
help(glm)
# --------------------------------------------------------------------
?glm
# --------------------------------------------------------------------
?`+`
# --------------------------------------------------------------------
example(glm)
# --------------------------------------------------------------------
help.search("regression")
# --------------------------------------------------------------------
??regression
# --------------------------------------------------------------------
library(help = "grDevices")
# --------------------------------------------------------------------
vignette("affy")
# --------------------------------------------------------------------
vignette(all = FALSE)
# --------------------------------------------------------------------
vignette(all = TRUE)
# ====================================================================
# ====================================================================
# R in a Nutshell (1. Aufl., Dez. 2010)
# Kapitel 04 -- R-Pakete
# *** R-Code ***
#
# Zeichenkodierung: UTF-8
# Schnappschuss : 2011-01-25 20:11:53 h
# angelegt von : Jörg Beyer
# ====================================================================
getOption("defaultPackages")
# --------------------------------------------------------------------
(.packages())
# --------------------------------------------------------------------
(.packages(all.available = TRUE))
# --------------------------------------------------------------------
# Versuch, rpart aufzurufen, bevor das Paket geladen wurde
fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis)
# --------------------------------------------------------------------
library(rpart)
# --------------------------------------------------------------------
install.packages(c("tree", "maptree"))
# --------------------------------------------------------------------