-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathPraxis_der_Datenanalyse.tex
2055 lines (1696 loc) · 79.2 KB
/
Praxis_der_Datenanalyse.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
\documentclass[12pt,ngerman,]{book}
\usepackage{lmodern}
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\usepackage{fixltx2e} % provides \textsubscript
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{eurosym}
\else % if luatex or xelatex
\ifxetex
\usepackage{mathspec}
\else
\usepackage{fontspec}
\fi
\defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
\newcommand{\euro}{€}
\fi
% use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
% use microtype if available
\IfFileExists{microtype.sty}{%
\usepackage{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\usepackage[margin=1in]{geometry}
\usepackage{hyperref}
\PassOptionsToPackage{usenames,dvipsnames}{color} % color is loaded by hyperref
\hypersetup{unicode=true,
pdftitle={Praxis der Datenanalyse},
pdfauthor={Sebastian Sauer. Mit Beiträgen von Oliver Gansser, Matthias Gehrke, Karsten Lübke und Norman Markgraf},
colorlinks=true,
linkcolor=Maroon,
citecolor=Blue,
urlcolor=Blue,
breaklinks=true}
\urlstyle{same} % don't use monospace font for urls
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[shorthands=off,main=ngerman]{babel}
\else
\usepackage{polyglossia}
\setmainlanguage[]{german}
\fi
\usepackage{color}
\usepackage{fancyvrb}
\newcommand{\VerbBar}{|}
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
% Add ',fontsize=\small' for more characters per line
\usepackage{framed}
\definecolor{shadecolor}{RGB}{248,248,248}
\newenvironment{Shaded}{\begin{snugshade}}{\end{snugshade}}
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}}
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{#1}}
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\ImportTok}[1]{#1}
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}}
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{#1}}
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}}
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.81,0.36,0.00}{\textbf{#1}}}
\newcommand{\BuiltInTok}[1]{#1}
\newcommand{\ExtensionTok}[1]{#1}
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}}
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.77,0.63,0.00}{#1}}
\newcommand{\RegionMarkerTok}[1]{#1}
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\AlertTok}[1]{\textcolor[rgb]{0.94,0.16,0.16}{#1}}
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{0.64,0.00,0.00}{\textbf{#1}}}
\newcommand{\NormalTok}[1]{#1}
\usepackage{longtable,booktabs}
\usepackage{graphicx,grffile}
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
\usepackage[normalem]{ulem}
% avoid problems with \sout in headers with hyperref:
\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
}
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{5}
% Redefines (sub)paragraphs to behave more like sections
\ifx\paragraph\undefined\else
\let\oldparagraph\paragraph
\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
\fi
\ifx\subparagraph\undefined\else
\let\oldsubparagraph\subparagraph
\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
\fi
%%% Use protect on footnotes to avoid problems with footnotes in titles
\let\rmarkdownfootnote\footnote%
\def\footnote{\protect\rmarkdownfootnote}
%%% Change title format to be more compact
\usepackage{titling}
% Create subtitle command for use in maketitle
\newcommand{\subtitle}[1]{
\posttitle{
\begin{center}\large#1\end{center}
}
}
\setlength{\droptitle}{-2em}
\title{Praxis der Datenanalyse}
\pretitle{\vspace{\droptitle}\centering\huge}
\posttitle{\par}
\subtitle{Skript zum Modul}
\author{Sebastian Sauer. Mit Beiträgen von Oliver Gansser, Matthias Gehrke,
Karsten Lübke und Norman Markgraf}
\preauthor{\centering\large\emph}
\postauthor{\par}
\predate{\centering\large\emph}
\postdate{\par}
\date{06 July, 2017}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage[bf,singlelinecheck=off]{caption}
%ses:
\pagestyle{headings}
%\setmainfont[UprightFeatures={SmallCapsFont=AlegreyaSC-Regular}]{Alegreya}
\usepackage{framed,color}
\definecolor{shadecolor}{RGB}{248,248,248}
\renewcommand{\textfraction}{0.05}
\renewcommand{\topfraction}{0.8}
\renewcommand{\bottomfraction}{0.8}
\renewcommand{\floatpagefraction}{0.75}
%\renewenvironment{quote}{\begin{VF}}{\end{VF}}
\let\oldhref\href
\renewcommand{\href}[2]{#2\footnote{\url{#1}}}
\ifxetex
\usepackage{letltxmacro}
\setlength{\XeTeXLinkMargin}{1pt}
\LetLtxMacro\SavedIncludeGraphics\includegraphics
\def\includegraphics#1#{% #1 catches optional stuff (star/opt. arg.)
\IncludeGraphicsAux{#1}%
}%
\newcommand*{\IncludeGraphicsAux}[2]{%
\XeTeXLinkBox{%
\SavedIncludeGraphics#1{#2}%
}%
}%
\fi
% Hier müsste noch das Chapter mit rein! Sonst gibt es Das nicht in der Ausgabe!
% Daher habe ich das auskommentiert! (NM)
%\renewcommand{\thesection}{\arabic{section}} % ses
\makeatletter
\newenvironment{kframe}{%
\medskip{}
\setlength{\fboxsep}{.8em}
\def\at@end@of@kframe{}%
\ifinner\ifhmode%
\def\at@end@of@kframe{\end{minipage}}%
\begin{minipage}{\columnwidth}%
\fi\fi%
\def\FrameCommand##1{\hskip\@totalleftmargin \hskip-\fboxsep
\colorbox{shadecolor}{##1}\hskip-\fboxsep
% There is no \\@totalrightmargin, so:
\hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}%
\MakeFramed {\advance\hsize-\width
\@totalleftmargin\z@ \linewidth\hsize
\@setminipage}}%
{\par\unskip\endMakeFramed%
\at@end@of@kframe}
\makeatother
\renewenvironment{Shaded}{\begin{kframe}}{\end{kframe}}
\newenvironment{rmdblock}[1]
{
\begin{itemize}
\renewcommand{\labelitemi}{
\raisebox{-.7\height}[0pt][0pt]{
{\setkeys{Gin}{width=3em,keepaspectratio}\includegraphics{images/icons/#1}}
}
}
\setlength{\fboxsep}{1em}
\begin{kframe}
\item
}
{
\end{kframe}
\end{itemize}
}
\newenvironment{rmdnote}
{\begin{rmdblock}{note}}
{\end{rmdblock}}
\newenvironment{rmdcaution}
{\begin{rmdblock}{caution}}
{\end{rmdblock}}
\newenvironment{rmdimportant}
{\begin{rmdblock}{important}}
{\end{rmdblock}}
\newenvironment{rmdtip}
{\begin{rmdblock}{tip}}
{\end{rmdblock}}
\newenvironment{rmdwarning}
{\begin{rmdblock}{warning}}
{\end{rmdblock}}
\newenvironment{rmdpseudocode}
{\begin{rmdblock}{pseudocode}}
{\end{rmdblock}}
\newenvironment{rmdexercises}
{\begin{rmdblock}{exercises}}
{\end{rmdblock}}
\newenvironment{rmdlove}
{\begin{rmdblock}{love}}
{\end{rmdblock}}
\usepackage{makeidx} % ses
\makeindex % ses
\urlstyle{tt}
\usepackage{amsthm}
\makeatletter
\def\thm@space@setup{%
\thm@preskip=8pt plus 2pt minus 4pt
\thm@postskip=\thm@preskip
}
%NM:
\def\@makechapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\huge\scshape\bfseries\scshape \@chapapp\space \thechapter
\par\nobreak
\vskip 20\p@
\fi
\fi
\interlinepenalty\@M
\Huge \scshape\bfseries\scshape #1\par\nobreak
\vskip 40\p@
}}
\makeatother
% NM: Zu einem frontmatter gehört auch ein mainmatter, appendix und backmatter! ;-) - Habe ich daher mal eingefügt!
\frontmatter
\usepackage{amsthm}
\newtheorem{theorem}{Theorem}[chapter]
\newtheorem{lemma}{Lemma}[chapter]
\theoremstyle{definition}
\newtheorem{definition}{Definition}[chapter]
\newtheorem{corollary}{Corollary}[chapter]
\newtheorem{proposition}{Proposition}[chapter]
\theoremstyle{definition}
\newtheorem{example}{Example}[chapter]
\theoremstyle{remark}
\newtheorem*{remark}{Remark}
\let\BeginKnitrBlock\begin \let\EndKnitrBlock\end
\begin{document}
\maketitle
{
\hypersetup{linkcolor=black}
\setcounter{tocdepth}{2}
\tableofcontents
}
\listoftables
\listoffigures
\chapter{Placeholder}\label{placeholder}
\chapter{Organisatorisches}\label{organisatorisches}
\mainmatter
\setcounter{chapter}{0} \part{Grundlagen}
\chapter{Rahmen}\label{Rahmen}
\begin{center}\includegraphics[width=0.3\linewidth]{images/FOM} \end{center}
\begin{center}\includegraphics[width=0.1\linewidth]{images/licence} \end{center}
\BeginKnitrBlock{rmdcaution}
Lernziele:
\begin{itemize}
\tightlist
\item
Einen Überblick über die fünf wesentliche Schritte der Datenanalyse
gewinnen.
\item
R und RStudio installieren können.
\item
Einige häufige technische Probleme zu lösen wissen.
\item
R-Pakete installieren können.
\item
Einige grundlegende R-Funktionalitäten verstehen.
\item
Auf die Frage ``Was ist Statistik?'' eine Antwort geben können.
\end{itemize}
\EndKnitrBlock{rmdcaution}
In diesem Skript geht es um die Praxis der Datenanalyse. Mit Rahmen ist
das ``Drumherum'' oder der Kontext der eigentlichen Datenanalyse
gemeint. Dazu gehören einige praktische Vorbereitungen und ein paar
Überlegungen. Zum Beispiel brauchen wir einen Überblick über das Thema.
Voilà (Abb. \ref{fig:fig-prozess}):
\begin{figure}
{\centering \includegraphics[width=0.7\linewidth]{images/Rahmen/Prozess_Datenanalyse}
}
\caption{Der Prozess der Datenanalyse}\label{fig:fig-prozess}
\end{figure}
Datenanalyse, praktisch betrachtet, kann man in fünf Schritte einteilen
(Wickham und Grolemund \protect\hyperlink{ref-r4ds}{2016}). Zuerst muss
man die Daten \emph{einlesen}, die Daten also in R (oder einer anderen
Software) verfügbar machen (laden). Fügen wir hinzu: In \emph{schöner
Form} verfügbar machen; man nennt dies auch \emph{tidy data} (hört sich
cooler an). Sobald die Daten in geeigneter Form in R geladen sind, folgt
das \emph{Aufbereiten}. Das beinhaltet Zusammenfassen, Umformen oder
Anreichern je nach Bedarf. Ein nächster wesentlicher Schritt ist das
\emph{Visualisieren} der Daten. Ein Bild sagt bekanntlich mehr als viele
Worte. Schließlich folgt das \emph{Modellieren} oder das Hypothesen
prüfen: Man überlegt sich, wie sich die Daten erklären lassen könnten.
Zu beachten ist, dass diese drei Schritte - Aufbereiten, Visualisieren,
Modellieren - keine starre Abfolge sind, sondern eher ein munteres
Hin-und-Her-Springen, ein aufbauendes Abwechseln. Der letzte Schritt ist
das \emph{Kommunizieren} der Ergebnisse der Analyse - nicht der Daten.
Niemand ist an Zahlenwüsten interessiert; es gilt, spannende Einblicke
zu vermitteln.
Der Prozess der Datenanalyse vollzieht sich nicht im luftleeren Raum,
sondern ist in einem \emph{Rahmen} eingebettet. Dieser beinhaltet
praktische Aspekte - wie Software, Datensätze - und grundsätzliche
Überlegungen - wie Ziele und Grundannahmen.
\section{Software installieren}\label{software-installieren}
Als Haupt-Analysewerkzeug nutzen wir R; daneben wird uns die sog.
``Entwicklungsumgebung'' RStudio einiges an komfortabler Funktionalität
bescheren. Eine Reihe von R-Paketen (``Packages''; d.h. Erweiterungen)
werden wir auch nutzen. R ist eine recht alte Sprache; viele Neuerungen
finden in Paketen Niederschlag, da der ``harte Kern'' von R lieber nicht
so stark geändert wird. Stellen Sie sich vor: Seit 29 Jahren nutzen Sie
eine Befehl, der Ihnen einen Mittelwert ausrechnet, sagen wir die
mittlere Anzahl von Tassen Kaffee am Tag. Und auf einmal wird der
Mittelwert anders berechnet?! Eine Welt stürzt ein! Naja, vielleicht
nicht ganz so tragisch in dem Beispiel, aber grundsätzlich sind
Änderungen in viel benutzen Befehlen potenziell problematisch. Das ist
wohl ein Grund, warum sich am ``R-Kern'' nicht so viel ändert. Die
Innovationen in R passieren in den Paketen. Und es gibt viele davon; als
ich diese Zeilen schreibe, sind es fast schon 10.000! Genauer: 9937 nach
dieser Quelle: \url{https://cran.r-project.org/web/packages/}. Übrigens
können R-Pakete auch Daten enthalten.
\subsection{R und RStudio
installieren}\label{r-und-rstudio-installieren}
\includegraphics[width=0.10000\textwidth]{images/Rahmen/Rlogo.png}
\includegraphics[width=0.20000\textwidth]{images/Rahmen/rstudiologo.png}
Sie können R unter \url{https://cran.r-project.org} herunterladen und
installieren (für Windows, Mac oder Linux). RStudio finden Sie auf der
gleichnamigen Homepage: \url{https://www.rstudio.com}; laden Sie die
``Desktop-Version'' für Ihr Betriebssystem herunter.
RStudio ist ``nur'' eine Oberfläche (``GUI'') für R, mit einer R von
praktischen Zusatzfunktionen. Die eigentlich Arbeit verrichtet das
``normale'' R, welches automatisch gestartet wird, wenn Sie RStudio
starten (sofern R installiert ist).
Die Oberfläche von RStudio sieht (unter allen Betriebssystemen etwa
gleich) so aus wie in Abbildung \ref{fig:rstudio-screenshot}
dargestellt.
\begin{figure}
{\centering \includegraphics[width=0.7\linewidth]{images/Rahmen/RStudio-Screenshot}
}
\caption{RStudio}\label{fig:rstudio-screenshot}
\end{figure}
Das \emph{Skript-Fenster}\index{Skript-Fenster} ähnelt einem normalem
Text-Editor; praktischerweise finden Sie aber einen Button ``run'', der
die aktuelle Zeile oder die Auswahl ``abschickt'', d.h. in die Konsole
gibt, wo die Syntax ausgeführt wird. Wenn Sie ein Skript-Fenster öffnen
möchten, so können Sie das Icon
\includegraphics{images/Rahmen/new_script.png} klicken (Alternativ:
Ctrl-Shift-N oder File \textgreater{} New File \textgreater{} R Script).
Aus dem Fenster der \emph{Konsole}\index{Konsole} spricht R zu uns bzw.
wir mit R. Wird ein Befehl\index{Funktion} (synonym:
\emph{Funktion}\index{Funktion}) hier eingegeben, so führt R ihn aus. Es
ist aber viel praktischer, Befehle in das Skript-Fenster einzugeben, als
in die Konsole. Behalten Sie dieses Fenster im Blick, wenn Sie Antwort
von R erwarten.
Im Fenster \emph{Umgebung}\index{Umgebung} (engl. ``environment'') zeigt
R, welche Variablen (Objekte) vorhanden sind. Stellen Sie sich die
Umgebung wie einen Karpfenteich vor, in dem die Datensätze und andere
Objekte herumschwimmen. Was nicht in der Umgebung angezeigt wird,
existiert nicht für R.
Im Fenster rechts unten werden mehrere Informationen bereit gestellt,
z.B. werden Diagramme (Plots) dort ausgegeben. Klicken Sie mal die
anderen Reiter im Fenster rechts unten durch.
Wer Shortcuts mag, wird in RStudio überschwänglich beschenkt; der
Shortcut für die Shortcuts ist \texttt{Shift-Alt-K}.
Wenn Sie RStudio starten, startet R automatisch auch. Starten Sie daher,
wenn Sie RStudio gestartet haben, \emph{nicht} noch extra R. Damit
hätten Sie sonst zwei Instanzen von R laufen, was zu Verwirrungen (bei R
und beim Nutzer) führen kann.
\subsection{Pakete}\label{pakete}
Ein Großteil der Neuentwicklungen bei R passiert in sog. `Paketen'
(engl. \emph{packages}), das sind Erweiterungen für R. Jeder, der sich
berufen fühlt, kann ein R-Paket schreiben und es zum `R-Appstore'
(\href{https://cran.r-project.org/}{CRAN}) hochladen. Von dort kann es
dann frei (frei wie in Bier) heruntergeladen werden.
Am einfachsten installiert man R-Pakete in RStudio über den Button
``Install'' im Reiter ``Packages'' (s. Abb.
\ref{fig:fig-install-packages}).
\begin{figure}
{\centering \includegraphics[width=0.7\linewidth]{images/Rahmen/install_packages}
}
\caption{So installiert man Pakete in RStudio}\label{fig:fig-install-packages}
\end{figure}
Ein R-Paket, welches wir gleich benötigen, heißt \texttt{devtools}.
Bitte installieren Sie es schon einmal (sofern noch nicht geschehen).
Sie können auch folgenden Befehl verwenden, um Pakete zu installieren.
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{install.packages}\NormalTok{(}\StringTok{"devtools"}\NormalTok{, }\DataTypeTok{dependencies =} \OtherTok{TRUE}\NormalTok{) }
\end{Highlighting}
\end{Shaded}
Aber einfacher geht es über die RStudio-Oberfläche.
Alle Pakete außer \texttt{devtools}, die wir hier benötigen, können über
das R-Paket \texttt{prada} installiert werden. Sie müssen also nur noch
das Paket \texttt{prada}installieren. Mit dem Befehl
\texttt{install\_prada\_pckgs} (aus dem Paket \texttt{prada}) werdenn
dann ggf. eine Reihe weiterer Pakete installiert. Allerdings wohnt
\texttt{prada} nicht im R-Appstore (CRAN), sondern bei
\href{www.github.com}{Github}\footnote{einer Online-Plattform, auf der
man Dateien bereistellen und ihre Veränderungen nachverfolgen kann}.
Um Pakete von Github zu installieren, nutzen wir diesen Befehl (Sie
müssen natürlich online sein):
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{devtools}\OperatorTok{::}\KeywordTok{install_github}\NormalTok{(}\StringTok{"sebastiansauer/prada"}\NormalTok{)}
\KeywordTok{library}\NormalTok{(prada)}
\end{Highlighting}
\end{Shaded}
Sofern Sie online sind, sollte das Paket \texttt{prada} jetzt
installiert sein. Installieren Sie jetzt alle Pakete, die für diesen
Kurs benötigt werden mit dem Befehl \texttt{install\_prada\_pckgs()}.
\BeginKnitrBlock{rmdcaution}
Beim Installieren von R-Paketen könnten Sie gefragt werden, welchen
``Mirror'' Sie verwenden möchten. Das hat folgenden Hintergrund:
R-Pakete sind in einer Art ``App-Store'', mit Namen CRAN (Comprehense R
Archive Network) gespeichert. Damit nicht ein armer, kleiner Server
überlastet wird, wenn alle Studis dieser Welt just gerade beschließen,
ein Paket herunterzuladen, gibt es viele Kopien dieses Servers - seine
Spiegelbilder (engl. ``mirrors''). Suchen Sie sich einfach einen aus,
der in der Nähe ist.
Bei der Installation von Paketen mit
\texttt{install.packages("name\_des\_pakets")} sollte stets der
Parameter \texttt{dependencies\ =\ TRUE} angefügt werden. Also
\texttt{install.packages("name\_des\_pakets",\ dependencies\ =\ TRUE)}.
Hintergrund ist: Falls das zu installierende Paket seinerseits Pakete
benötigt, die noch nicht installiert sind (gut möglich), dann werden
diese sog. ``dependencies'' gleich mitinstalliert (wenn Sie
\texttt{dependencies\ =\ TRUE} setzen).
\EndKnitrBlock{rmdcaution}
Nicht vergessen: Installieren muss man eine Software \emph{nur einmal};
\emph{starten} (laden) muss man die R-Pakete jedes Mal, wenn man sie
vorher geschlossen hat und wieder nutzen möchte.
\begin{quote}
Wenn Sie R bzw. RStudio schließen, werden alle Pakete ebenfalls
geschlossen. Sie müssen die benötigten Pakete beim erneuten Öffnen von
RStudio wieder starten.
\end{quote}
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{library}\NormalTok{(dplyr) }
\end{Highlighting}
\end{Shaded}
Der Befehl bedeutet sinngemäß: ``Hey R, geh in die Bücherei (library)
und hole das Buch (package) dplyr!''.
\BeginKnitrBlock{rmdcaution}
Wann benutzt man bei R Anführungszeichen? Das ist etwas verwirrend im
Detail, aber die Grundegel lautet: wenn man Text anspricht. Im Beispiel
oben ``library(dplyr)'' ist ``dplyr'' hier erst mal für R nichts
Bekanntes, weil noch nicht geladen. Demnach müssten \emph{eigentlich}
Anführungsstriche stehen. Allerdings meinte ein Programmierer, dass es
doch so bequemer ist. Hat er Recht. Aber bedenken Sie, dass es sich um
die Ausnahme einer Regel handelt. Sie können also auch schreiben:
library(``dplyr'') oder library(`dplyr'); beides geht.
\EndKnitrBlock{rmdcaution}
\subsection{Hilfe! R startet nicht!}\label{hilfe-r-startet-nicht}
\begin{quote}
Manntje, Manntje, Timpe Te,\\
Buttje, Buttje inne See,\\
myne Fru de Ilsebill\\
will nich so, as ik wol will.
\end{quote}
\emph{Gebrüder Grimm, Märchen vom Fischer und seiner Frau\footnote{\url{https://de.wikipedia.org/wiki/Vom_Fischer_und_seiner_Frau}}}
Ihr R startet nicht oder nicht richtig? Die drei wichtigsten Heilmittel
sind:
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
Schließen Sie die Augen für eine Minute. Denken Sie an etwas Schönes
und was Rs Problem sein könnte.
\item
Schalten Sie den Rechner aus und probieren Sie es morgen noch einmal.
\item
Googeln.
\end{enumerate}
Sorry für die schnoddrigen Tipps. Aber: Es passiert allzu leicht, dass
man \emph{Fehler} wie diese macht:
\BeginKnitrBlock{rmdcaution}
OH NO:
\begin{itemize}
\item
install.packages(dplyr)
\item
install.packages(``dliar'')
\item
install.packages(``derpyler'')
\item
install.packages(``dplyr'') \# dependencies vergessen
\item
Keine Internet-Verbindung
\item
library(dplyr) \# ohne vorher zu installieren
\end{itemize}
\EndKnitrBlock{rmdcaution}
Wenn R oder RStudio dann immer noch nicht starten oder nicht richtig
laufen, probieren Sie dieses:
\begin{itemize}
\item
Sehen Sie eine Fehlermeldung, die von einem fehlenden Paket spricht
(z.B. ``Package `Rcpp' not available'') oder davon spricht, dass ein
Paket nicht installiert werden konnte (z.B. ``Package `Rcpp' could not
be installed'' oder ``es gibt kein Paket namens `Rcpp'\,'' oder
``unable to move temporary installation XXX to YYY''), dann tun Sie
folgendes:
\item
Schließen Sie R und starten Sie es neu.
\item
Installieren Sie das oder die angesprochenen Pakete\footnote{\texttt{install.packages("name\_des\_pakets",\ dependencies\ =\ TRUE)}
oder mit dem entsprechenden Klick in RStudio}.
\item
Starten Sie das entsprechende Paket mit
\texttt{library(name\_des\_pakets)}.
\item
Gerade bei Windows 10 scheinen die Schreibrechte für R (und damit
RStudio oder RCommander) eingeschränkt zu sein. Ohne Schreibrechte
kann R aber nicht die Pakete (``packages'') installieren, die Sie für
bestimmte R-Funktionen benötigen. Daher schließen Sie R bzw. RStudio
und suchen Sie das Icon von R oder wenn Sie RStudio verwenden von
RStudio. Rechtsklicken Sie das Icon und wählen Sie ``als Administrator
ausführen''. Damit geben Sie dem Programm Schreibrechte. Jetzt können
Sie etwaige fehlende Pakete installieren.
\item
Ein weiterer Grund, warum R bzw. RStudio die Schreibrechte verwehrt
werden könnten (und damit die Installation von Paketen), ist ein
Virenscanner. Der Virenscanner sagt, nicht ganz zu Unrecht: ``Moment,
einfach hier Software zu installieren, das geht nicht, zu
gefährlich''. Grundsätzlich gut, in diesem Fall unnötig. Schließen Sie
R/RStudio und schalten Sie dann den Virenscanner \emph{komplett} (!)
aus. Öffnen Sie dann R/RStudio wieder und versuchen Sie fehlende
Pakete zu installieren.
\end{itemize}
\BeginKnitrBlock{rmdcaution}
Verwenden Sie möglichst die neueste Version von R, RStudio und Ihres
Betriebssystems. Ältere Versionen führen u.U. zu Problemen; je älter,
desto Problem\ldots{} Updaten Sie Ihre Packages regelmäßig z.B. mit
\texttt{update.packages()} oder dem Button ``Update'' bei RStudio
(Reiter \texttt{Packages}).
\EndKnitrBlock{rmdcaution}
\subsection{Vertiefung: Zuordnung von Paketen zu
Befehlen}\label{funs-pckgs}
\emph{Woher weiß man, welche Befehle (oder auch Daten) in einem Paket
enthalten sind?}
Eine einfache Möglichkeit ist es, beim Reiter `Pakete' auf den Namen
eines der installierten Pakete zu klicken. Daraufhin öffnet sich die
Dokumentation des Pakets und man sieht dort alle Befehle und Daten
aufgeführt (s. Abbildung \ref{fig:pakete-hilfe}). Übrigens sehen Sie
dort auch die Version eines Pakets (vielleicht sagt jemand mal zu Ihnen,
``Sie sind ja outdated'', dann schauen Sie mal auf die die
Paket-Versionen).
\begin{figure}
{\centering \includegraphics[width=0.5\linewidth]{images/Rahmen/hilfe_pakete}
}
\caption{Hier werden Sie geholfen: Die Dokumentation der R-Pakete}\label{fig:pakete-hilfe}
\end{figure}
Für geladenen Pakete kann man auch den Befehl \texttt{help} nutzen, z.B.
\texttt{help(ggplot2)}.
\emph{Und umgekehrt, woher weiß ich, in welchem Paket ein Befehl
`wohnt'?}
Probieren Sie den Befehl \texttt{help.search("qplot")}, wenn Sie wissen
möchten, in welchem Paket \texttt{qplot} zuhause ist.
\texttt{help.search} sucht alle Hilfeseiten von \emph{installierten}
Paketen, in der der Suchbegriff irgendwie vorkommt. Um das Paket eines
\emph{geladenen} Befehl zu finden, hilft der Befehl \texttt{find}:
\texttt{find("qplot")}.
Sie können auch den Befehl \texttt{find\_fun}s aus dem Paket
\texttt{prada} nutzen:
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{prada}\OperatorTok{::}\KeywordTok{find_funs}\NormalTok{(}\StringTok{"select"}\NormalTok{)}
\CommentTok{#> # A tibble: 5 x 3}
\CommentTok{#> package_name builtin_pckage loaded}
\CommentTok{#> <chr> <lgl> <lgl>}
\CommentTok{#> 1 dplyr FALSE FALSE}
\CommentTok{#> 2 MASS TRUE FALSE}
\CommentTok{#> 3 plotly FALSE FALSE}
\CommentTok{#> 4 raster FALSE FALSE}
\CommentTok{#> 5 VGAM FALSE FALSE}
\end{Highlighting}
\end{Shaded}
In diesem Skript sind am Ende jedes Kapitels die jeweils besprochenen
(neuen) Befehle aufgeführt - inklusive ihres Paketes. Falls bei einem
Befehl kein Paket angegeben ist, heißt das, dass der Befehl im
`Standard-R' wohnt - Sie müssen kein weiteres Paket laden\footnote{Eine
Liste der Pakete, die beim Standard-R enthalten sind (also bereits
installiert sind) finden Sie
\href{https://stat.ethz.ch/R-manual/R-devel/doc/html/packages.html}{hier}}.
Also zum Beispiel \texttt{ggplot2::qplot}: Der \emph{Befehl}
\texttt{qplot} ist im \emph{Paket} \texttt{ggplot2} enthalten. Das
Zeichen \texttt{::} trennt also Paket von Befehl.
\BeginKnitrBlock{rmdcaution}
Manche Befehle haben Allerweltsnamen (z.B. `filter'). Manchmal gibt es
Befehle mit gleichem Namen in verschiedenen Paketen; besonders Befehle
mit Allerweltsnamen (wie `filter') sind betroffen (`mosaic::filter' vs.
`dplyr::filter'). Falls Sie von wirre Ausgaben bekommen oder diffuse
Fehlermeldung kann es sein, kann es sein, dass R einen Befehl mit dem
richtigen Namen aber aus dem `falschen' Paket zieht. Geben Sie im
Zweifel lieber den Namen des Pakets vor dem Paketnamen an, z.B. so
\texttt{dplyr::filter}. Der `doppelte Doppelpunnkt' trennt den
Paketnamen vom Namen der Funtion.
\EndKnitrBlock{rmdcaution}
Außerdem sind zu Beginn jedes Kapitels die in diesem Kapitel benötigten
Pakete angegeben. Wenn sie diese Pakete laden, werden alle Befehle
dieses Kapitels funktionieren\footnote{es sei denn, sie tun es nicht}.
\emph{Wie weiß ich, ob ein Paket geladen ist?}
Wenn der Haken im Reiter `Packages' gesetzt ist (s. Abbildung
\ref{fig:pakete-hilfe}), dann ist das Paket geladen. Sonst nicht.
\subsection{Datensätze}\label{daten}
Die folgenden Datensätze sind entweder im Paket \texttt{prada} enthalten
oder können aus anderen Paketen geladen werden. Um Daten aus einem Paket
zu laden, gibt es den Befehl \texttt{data}:
\texttt{data("name\_datenobjekt",\ package\ =\ "Paketname")}. Also zum
Beispiel:
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{data}\NormalTok{(}\StringTok{"stats_test"}\NormalTok{, }\DataTypeTok{package =} \StringTok{"prada"}\NormalTok{)}
\end{Highlighting}
\end{Shaded}
Wenn ein bestimmtes Paket geladen ist, können Sie auch auf den Parameter
\texttt{package\ =\ ...} verzichten, wenn ihr Datensatz in jedem Paket
wohnt: Geladene Pakete werden vom Befehl \texttt{data} automatisch
durchsucht.
Alternativ können Sie die Daten auch im Ordner \texttt{data} im
Github-Repositorium herunterladen. Gehen Sie auf die Github-Seite dieses
Kurses\footnote{\url{https://github.com/sebastiansauer/Praxis_der_Datenanalyse}},
klicken Sie auf den großen grünen Button ``Clone or download'', wählen
Sie dann ``Download ZIP'', um alle Dateien herunterzuladen. Nach dem
Entzippen können Sie dann auf alle Dateien, inklusive Daten, zugreifen.
\begin{quote}
Die Daten dieses Kurses liegen im Ordner `data'.
\end{quote}
\begin{itemize}
\tightlist
\item
Datensatz \texttt{profiles} aus dem R-Paket \{okcupiddata\} (Kim und
Escobedo-Land \protect\hyperlink{ref-kim2015okcupid}{2015}); es
handelt sich um Daten von einer Online-Singlebörse
\item
Datensatz \texttt{stats\_test} aus dem R-Paket \{prada\} (Sauer
\protect\hyperlink{ref-Sauer_2017}{2017}\protect\hyperlink{ref-Sauer_2017}{a});
es handelt sich um Ergebnisse einer Statistikklausur (einer
Probeklausur)
\item
Datensatz \texttt{flights} aus dem R-Paket \{nycflights13\} (RITA
\protect\hyperlink{ref-nycflights13}{2013}); es handelt sich um
Abflüge von den New Yorker Flughäfen
\item
Datensatz \texttt{wo\_men}, URL: \url{https://osf.io/ja9dw} (Sauer
\protect\hyperlink{ref-Sauer_2017a}{2017}\protect\hyperlink{ref-Sauer_2017a}{b});
es handelt sich um Körper- und Schuhgröße von Studierenden
\item
Datensatz \texttt{extra} aus dem R-Paket \{prada\} (Sauer
\protect\hyperlink{ref-Sauer_2016}{2016}); es handelt sich die
Ergebnisse einer Umfrage zu Extraversion
\item
Datensatz \texttt{titanic\_train} aus dem Paket \{titanic\} von
\href{https://www.kaggle.com/c/titanic/data}{kaggle}; es handelt sich
um Überlebensraten vom Titanic-Unglück.
\item
Datensatz \texttt{Affairs} aus dem Paket \{AER\} (Fair
\protect\hyperlink{ref-fair1978theory}{1978}); es handelt sich um eine
Umfrage zu außerehehlichen Affären.
\end{itemize}
Wie man Daten in R `einlädt' (Studierende sagen gerne `ins R
hochladen'), besprechen wir im Kapitel \ref{daten-einlesen}.
\section{ERRRstkontakt}\label{errrstkontakt}
\subsection{R-Skript-Dateien}\label{r-skript-dateien}
Ein neues \emph{R-Skript}\index{R-Skript} im RStudio können Sie z.B.
öffnen mit \texttt{File-New\ File-R\ Script}. Schreiben Sie dort Ihre
R-Befehle; Sie können die Skriptdatei speichern, öffnen, ausdrucken,
übers Bett hängen\ldots{} R-Skripte können Sie speichern (unter
\texttt{File-Save}) und öffnen. R-Skripte sind einfache Textdateien, die
jeder Texteditor verarbeiten kann. Nur statt der Endung \texttt{.txt},
sind R-Skripte stolzer Träger der Endung \texttt{.R}. Es bleibt aber
eine schnöde Textdatei. Geben Sie Ihren R-Skript-Dateien die Endung
``.R'', damit erkennt RStudio, dass es sich um ein R-Skript handelt und
bietet ein paar praktische Funktionen wie den ``Run-Button''.
\subsection{Datentypen in R}\label{datentypen-in-r}
Die (für diesen Kurs) wichtigsten Datentypen von R sind in Tabelle
\ref{tab:datentypen} aufgeführt (vgl. (\emph{Programmieren mit R}
\protect\hyperlink{ref-ligges}{2009})).
\begin{table}
\caption{\label{tab:datentypen}Wichtige Datentypen in R}
\centering
\begin{tabular}[t]{l|l|l}
\hline
Name & Beschreibung & Beispiel\\
\hline
Name & Beschreibung & Beispiel\\
\hline
NULL & die leere Menge & NULL\\
\hline
logical & Logische Ausdrücke & TRUE\\
\hline
integer & Ganze Zahl & 3\\
\hline
factor & nominale Variablen & "weiblich"\\
\hline
numeric & Reelle Zahl & 2.71\\
\hline
character & Text & "Schorsch"\\
\hline
\end{tabular}
\end{table}
All diese Datentypen (mit Ausnahme der leeren Menge) sind als
\emph{Vektoren}\index{Vektoren} angelegt, also mehreren Elementen (z.B.
Zahlen), die zu einem Ganzen (wie in einer Liste) verknüpft sind.
\emph{Faktoren} sind ganz interessant, weil die einzelnen Ausprägungen
(\emph{Faktorstufen}\index{Faktorstufen} genannt) für R als Zahlen
gespeichert sind (z.B. ``Frau Müller und Herr Schorsch'' = 1). Wenn ein
Vektor aus 100 Mal diesem Text (``Frau Müller\ldots{}'') besteht, muss R
nur 100 mal 1 speichern und einmal die Zuordnung, was die 1 bedeutet.
Spart Speicher. Außerdem kann man definieren, was alles eine Faktorstufe
ist (z.B. nur ``Mann'' und ``Frau''). Andere Eingaben sind dann nicht
möglich; das kann praktisch sein, wenn man von vornerein nur bestimmte
Ausprägungen zulassen möchte. Textvariablen sind da entspannter:
Jeglicher Art von Text ist erlaubt. Text ist in R immer in
Anführungszeichen (einfach oder doppelt) zu setzen.
Für die praktische Datenanalyse ist der \texttt{dataframe}
(\emph{Dataframe}\index{Dataframe}; auch Datentabelle\index{Dataframe}
oder Datensatz\index{Dataframe}) am wichtigsten. Grob gesagt handelt es
sich dabei um eine Tabelle, wie man sie aus Excel kennt. Etwas genauer
ist eine Kombination von Vektoren mit gleicher Länge, so dass eine
`rechteckige' Datenstruktur entsteht. Alle Spalten (d.h. Vektoren) haben
einen Namen, so dass es `Spaltenköpfe' gibt. Eine neuere Variante von
Dataframes sind \emph{tibbles} (Tibbles)\index{Tibbles}, die \emph{auch}
Dataframes sind, aber ein paar praktische Zusatzeigenschaften aufweisen
(normale Dataframes können sich manchmal in einfache Vektoren auflösen;
Tibbles tun dies nie).
\subsection{Hinweise}\label{hinweise}
Unser erster Kontakt mit R! Ein paar Anmerkungen vorweg:
\begin{itemize}
\tightlist
\item
R unterscheidet zwischen Groß- und Kleinbuchstaben, d.h. \texttt{Oma}
und \texttt{oma} sind zwei verschiedene Dinge für R!
\item
R verwendet den Punkt \texttt{.} als Dezimaltrennzeichen.
\item
Fehlende Werte werden in R durch \texttt{NA} kodiert.
\item
Kommentare werden mit dem Rautezeichen \texttt{\#} eingeleitet; der
Rest der Zeile von von R dann ignoriert.
\item
\emph{Variablennamen}\index{Variablen} in R sollten mit Buchstaben
beginnen; ansonsten dürfen nur Zahlen und Unterstriche (\texttt{\_})
enthalten sein. Leerzeichen sollte man meiden. Das gilt auch für
Spaltennamen.
\item
Um den Inhalt einer Variablen auszulesen, geben wir einfach den Namen
des Objekts ein (und schicken den Befehl ab).
\item
Bleiben Sie konsistent, in der Art und Weise, wie Sie Ihre Syntax
schreiben. Ein Vorschlag zum `Syntax-Stil' finden Sie
\href{http://adv-r.had.co.nz/Style.html}{hier}.
\item
Variablen einen treffenden Namen zu geben, ist nicht immer leicht,
aber wichtig. Namen sollten knapp, aber aussagekräftig sein.
\end{itemize}
\begin{verbatim}
# so nicht:
var
x
dummy
objekt
dieser_name_ist_etwas_lang_vielleicht
# gut:
tips_mw
lm1
\end{verbatim}
\subsection{Text und Variablen
zuweisen}\label{text-und-variablen-zuweisen}
Man kann einer Variablen auch Text zuweisen (im Gegensatz zu Zahlen):
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{y <-}\StringTok{ "Hallo R!"}
\end{Highlighting}
\end{Shaded}
Man kann auch einer Variablen eine andere zuweisen:
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{y <-}\StringTok{ }\NormalTok{x}
\end{Highlighting}
\end{Shaded}
Wird jetzt y mit dem Inhalt von x überschrieben oder umgekehrt? Der
Zuweisungspfeil \texttt{\textless{}-} macht die Richtung der Zuweisung
ganz klar. Zwar ist in R das Gleichheitszeichen synonym zum
Zuweisungspfeil erlaubt, aber der Zuweisungspfeil macht die Sache
glasklar und sollte daher bevorzugt werden.
Man kann auch einer Variablen \emph{mehr als} einen Wert zuweisen:
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{x <-}\StringTok{ }\KeywordTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{, }\DecValTok{2}\NormalTok{, }\DecValTok{3}\NormalTok{)}
\end{Highlighting}
\end{Shaded}
Dieser Befehl erzeugt eine ``Spalte'' (einen Vektor). Will man einer
Variablen \emph{mehr als} einen Wert zuweisen, muss man die Werte erst
in einen Vektor ``zusammen binden''; das geht mit dem Befehl \texttt{c}
(vom engl. ``\emph{\textbf{c}ombine}'').
\subsection{Funktionen aufrufen}\label{funktionen-aufrufen}
Um einen \emph{Befehl}\index{Befehl, Funktion} (präziser aber synonym
hier: eine Funktion) aufzurufen, geben wir ihren Namen an und definieren
sog. \emph{Parameter}\index{Parameter eines R-Befehls} in einer runden
Klammer, z.B. so:
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{wo_men <-}\StringTok{ }\KeywordTok{read.csv}\NormalTok{(}\StringTok{"data/wo_men.csv"}\NormalTok{)}
\end{Highlighting}
\end{Shaded}
Allgemein gesprochen:
\begin{verbatim}
funktionsname(parametername1 = wert1, parametername2 = wert2, ...)
\end{verbatim}
Die drei Punkte \texttt{...} sollen andeuten, dass evtl. weitere
Parameter zu übergeben wären. Die Reihenfolge der Parameter ist
\emph{egal} - wenn man die Parameternamen anführt. Ansonsten muss man
sich an die Standard-Reihenfolge, die eine Funktion vorgibt halten:
\begin{Shaded}
\begin{Highlighting}[]
\CommentTok{#ok:}
\NormalTok{wo_men <-}\StringTok{ }\KeywordTok{read.csv}\NormalTok{(}\DataTypeTok{file =} \StringTok{"data/wo_men.csv"}\NormalTok{, }\DataTypeTok{header =} \OtherTok{TRUE}\NormalTok{, }\DataTypeTok{sep =} \StringTok{","}\NormalTok{)}
\NormalTok{wo_men <-}\StringTok{ }\KeywordTok{read.csv}\NormalTok{(}\StringTok{"data/wo_men.csv"}\NormalTok{, }\OtherTok{TRUE}\NormalTok{, }\StringTok{","}\NormalTok{)}
\NormalTok{wo_men <-}\StringTok{ }\KeywordTok{read.csv}\NormalTok{(}\DataTypeTok{header =} \OtherTok{TRUE}\NormalTok{, }\DataTypeTok{sep =} \StringTok{","}\NormalTok{, }\DataTypeTok{file =} \StringTok{"data/wo_men.csv"}\NormalTok{)}
\CommentTok{# ohno:}
\NormalTok{wo_men <-}\StringTok{ }\KeywordTok{read.csv}\NormalTok{(}\OtherTok{TRUE}\NormalTok{, }\StringTok{"data/wo_men.csv"}\NormalTok{, }\StringTok{","}\NormalTok{)}
\end{Highlighting}