ΟδηγίεςχρήσηςτουR,μέρος1 ο Προκαταρκτικά Κατεβάζουμετολογισμικόαπότηνιστοσελίδαhttp://cran.cc.uoc.gr/bin/windows/base/ Εγκαθιστούμετολογισμικόστονυπολογιστήμαςεκτελώνταςτοαρχείοπουκατεβάσαμε. ΤρέχουμετολογισμικόμεδιπλόκλικστομπλεεικονίδιοκαιβλέπουμετοπεριβάλλοντουR: Αρχικάθαπληκτρολογούμετιςεντολέςμαςστολευκόπαράθυρο.Αργότεραθααποθηκεύουμε σειρέςεντολώνσεξεχωριστάαρχεία,ώστεναέχουμεπρόσβασησεπροηγούμενεςεργασίες. Βασικέςαρχές Α.Αριθμητικέςπράξεις ΤοRεκτελείαριθμητικέςπράξειςγράφονταςαπλώςτησχετικήπαράσταση.Π.χ.,ανγράψουμε 2+3θαμαςδώσειτοαποτέλεσμα5: 2+3 [1] 5 Αυτάπουγράφουμεεμείςεμφανίζονταικόκκινα,ενώοιαπαντήσειςτουλογισμικούείναιμπλε, ώστενατιςξεχωρίζουμεεύκολα.το[1]σημαίνειότιβλέπουμετοπρώτοστοιχείοτης απάντησηςστοερώτημάμας(τοναριθμό5),πουστηνπερίπτωσηαυτήείναικαιτομοναδικό.
Παρομοίωςμπορούμενακάνουμεπρόσθεση,αφαίρεσηκλπ.: (8-5)*2/17 [1] 0.3529412 Γιαναυποδείξουμετηνεπιθυμητήσειράτωνπράξεων,χρησιμοποιούμεπαρενθέσεις.Στο παραπάνωπαράδειγμα,θέλουμεηδιαφορά8 5ναυπολογιστείπρώτα,καιμετάτο αποτέλεσμαναπολλαπλασιαστείμετοδύο. Τασύμβολατωνπράξεωνείναι:πρόσθεση+,αφαίρεση,πολλαπλασιασμός*,διαίρεση/ Γιαναυψώσουμεσεδύναμη,χρησιμοποιούμετοσύμβολο^: 2^3 [1] 8 Το2στην3 η δύναμη,δηλαδήπολλαπλασιασμένομετονεαυτότουτρειςφορές,είναι2 2 2=8. Β.Μεταβλητές ΤοRχρησιμοποιείμεταβλητές,στιςοποίεςμπορούμενακαταχωρίσουμεαριθμητικέςή κατηγορικέςτιμές.γιαπαράδειγμα,μπορούμενααποθηκεύσουμετηντιμή5στημεταβλητήa: a <- 5 Τοσύμβολο<-δείχνειπωςοαριθμός5«τοποθετείται»στηνετικέταa.Τοίδιοακριβώς αποτέλεσμαμπορούμεναπετύχουμεκαιγράφονταςπρώτατηντιμή,αρκείτοβέλοςναδείχνει προςτησωστήκατεύθυνση,δηλαδήτοόνοματηςμεταβλητής: 5 - a Μετάτηνανάθεση,τοaέχειπάρειτηντιμή5,καιθατηδιατηρήσειμέχρινατηναλλάξουμε. Στησυνέχειαμπορούμεναχρησιμοποιούμετοaσεοποιαδήποτεπράξησαναήταναριθμός: a-2 [1] 3 Γιαονόματαμεταβλητώνμπορούμεναχρησιμοποιήσουμεό,τιμαςβολεύει.Γιαπαράδειγμα, γιαναυπολογίσουμεέναδείκτησωματικήςμάζας,μπορούμεναγράψουμε: ypsos <- 1.81 varos <- 85 BMI <- varos / ypsos^2 BMI [1] 25.94548
Στοπαράδειγμααυτόχρησιμοποιήσαμετημεταβλητήμεόνομαypsosγιατούψος(σε μέτρα),τημεταβλητήμεόνομαvarosγιατοβάρος(σεκιλά),καιτημεταβλητήμεόνομαbmi γιατοδείκτη.φυσικάθαμπορούσαμεναείχαμεχρησιμοποιήσειοποιαδήποτεάλλαονόματα: a <- 1.81 b <- 85 i <- b / a^2 i [1] 25.94548 Προσοχή,ηυποδιαστολήτωνδεκαδικώναριθμώνείναιτελεία,όχικόμμα! Γ.Συναρτήσεις Λέγονταςσυναρτήσειςεννοούμε,πολύχοντρικά,προκαθορισμένεςαντιστοιχίεςήλειτουργίες πουεφαρμόζονταισεένανήπερισσότερουςαριθμούςκαιδίνουνσυγκεκριμένοαποτέλεσμα. Γιαπαράδειγμα,ητετραγωνικήρίζαενόςαριθμούδίνεταιαπότησυνάρτησηsqrt: sqrt(16) [1] 4 Ησυνάρτησηroundχρησιμοποιείταιγιατηστρογγυλοποίησητωνδεκαδικώνψηφίων.Έτσι, μπορούμενακρατήσουμεμόνοέναδεκαδικόαπότοδείκτησωματικήςμάζαςπου υπολογίσαμεπαραπάνω: round(bmi,1) [1] 25.9 Ανθέλαμεδύοδεκαδικάψηφία,θαέπρεπεναδώσουμεround(BMI,2).Ανπαραλείψουμε εντελώςτηνπαράμετροαυτή(τοδεύτεροαριθμό),εννοείταιτομηδέν(κανέναδεκαδικό). ΌλεςοισυναρτήσειςστοRδέχονταιταορίσματάτουςμέσασεπαρενθέσεις.Πρέπειναείμαστε πάνταπολύπροσεκτικοίστιςπαρενθέσεις,ναμηντιςξεχνάμε,διότιαυτόοδηγείσελάθη,π.χ. round BMI,2 Error: unexpected symbol in "round BMI" Ένασημείοπουπρέπειναπροσέχουμειδιαίτεραείναιότιόσεςπαρενθέσειςανοίγουμεπρέπει αντίστοιχανατιςκλείνουμε.ανλοιπόνέχουμεσυναρτήσειςμέσασεσυναρτήσεις,ήπράξειςμε παρενθέσειςμέσασεσυναρτήσεις,θαπρέπειναελέγχουμεότιγιακάθεπαρένθεσηπου ανοίγει(αριστερή)υπάρχεικαιηαντίστοιχηπουκλείνει(δεξιά). round(85/(1.81^2)) [1] 26
Ανξεχάσουμενακλείσουμεκάποιαπαρένθεση,τοRθεωρείότιδενέχουμετελειώσειμετην εντολήμαςκαιμαςπαρουσιάζειένα+(σεκόκκινοχρώμα)αναμένονταςτησυνέχεια. round(85/(1.81^2) + Στηνπερίπτωσηαυτή,δίνουμετηντελικήπαρένθεσησυνεχίονταςστηνεπόμενησειρά: + ) [1] 26 Δ.Ακολουθίες Πολλέςφορέςχρειάζεταιναεπεξεργαστούμεένασύνολοαπόαριθμούς,ωςμιαομάδαήμια ακολουθία.γιαπαράδειγμα,μπορείναθέλουμεναυπολογίσουμετοάθροισμαπερισσότερων απόδύοαριθμών.θαμπορούσαμενατουςπροσθέσουμεστησειρά,μετοσύμβολοτης πρόσθεσης: 5 + 2 + 6 + 8 + 3 [1] 24 Έτσιόμωςχάνουμετηδυνατότηταναδιατηρήσουμεαυτήτηνομάδααριθμώνγιαάλλες πράξεις,καιπρέπεινατουςγράφουμεαπότηναρχήκάθεφορά.γιατηνπερίπτωσηενός μοναδικούαριθμού,είδαμεπαραπάνωότιμπορούμεναχρησιμοποιήσουμεμιαμεταβλητή πουναδιατηρείτηντιμήτου.αντίστοιχα,γιατηνπερίπτωσηομάδωναριθμών, χρησιμοποιούμετησυνδυαστικήσυνάρτησηc,ηοποίαενώνειμιαομάδααριθμώνσεμια σταθερήακολουθία.ηομάδααυτήδίνεταιμέσασεζεύγοςπαρενθέσεων,όπουοι μεμονωμένοιαριθμοίχωρίζονταιμεκόμμα. omada <- c(5,2,6,8,3) Μετοντρόποαυτό,ημεταβλητήomadaπεριέχειπλέοναυτήντηνπεντάδααριθμών. omada [1] 5 2 6 8 3 Έτσι,ανθέλουμετοάθροισμααυτήςτηςομάδας,μπορούμεναχρησιμοποιήσουμεαπευθείας τησυνάρτησηsum: sum(omada) [1] 24
ΤοRμαςδίνεισυναρτήσειςγιαδιάφορουςχρήσιμουςυπολογισμούςομάδωναριθμών,όπως γιαπαράδειγματονεντοπισμότουμέγιστουκαιτουελάχιστου. min(omada) [1] 2 max(omada) [1] 8 Τοπλήθοςτωνστοιχείωνμιαςακολουθίαςδίνεταιαπότησυνάρτησηlength length(omada) [1] 5 Αργότεραθαδούμεπερισσότερεςσυναρτήσεις,πουθατιςχρειαστούμεγιατιςαναλύσειςμας. Προςτοπαρόν,εξασκηθείτεστηβασικήχρήσητουRχρησιμοποιώνταςτιςπαραπάνωπράξεις καισυναρτήσεις,καικατασκευάζονταςπαρόμοιαδικάσαςπαραδείγματα.πειραματιστείτεμε διαφορετικέςτιμέςκαιπαραστάσειςκαιμηφοβάστεότανδίνετεκάτιλάθος! ΑθανάσιοςΠρωτόπαπας Μάρτιος2012
ΟδηγίεςχρήσηςτουR,μέρος2 ο Ελληνικά Ανπροσπαθήσουμεναγράψουμεελληνικάήναανοίξουμεκάποιοαρχείοδεδομένωνμε ελληνικούςχαρακτήρεςστοr,μπορείαντίγιαελληνικάναδούμελατινικούςχαρακτήρεςμε τόνουςήάλλακαλλικαντζαράκια.τότεδίνουμετηνπαρακάτωεντολήγιαναγυρίσειτοrστα ελληνικά: Sys.setlocale("LC_CTYPE","Greek") [1] "Greek_Greece.1253" ΗαπόκρισητουR(μεμπλε)επιβεβαιώνειτηρύθμισητωνελληνικών. Πλαίσιαδεδομένων ΤοRδιατηρείμετρήσειςμέσασεδομέςπουονομάζονται«πλαίσιαδεδομένων»(dataframe). Κάθεπλαίσιοδεδομένωνπεριέχειμίαήπερισσότερεςμεταβλητές. Γιαπαράδειγμα,αςκαταγράψουμετοφύλοκαιτηνηλικίαδύοατόμων,τουΓιάννηκαιτης Μαρίας,σεέναπλαίσιοδεδομένωντοοποίοαναθέτουμεσεμιαμεταβλητήμεόνομαatoma: atoma<-data.frame(sex=c("m","f"),age=c(21,22)) Μετησυνάρτησηdata.frameορίζουμεέναπλαίσιοδεδομένων.Στησυνάρτησηδίνουμεως ορίσματατιςμεταβλητέςπουθέλουμεναπεριέχειτοπλαίσιο,δηλαδήsex(φύλο)καιage (ηλικία).σεκάθεμεταβλητήδίνουμετιςαντίστοιχεςμετρήσεις,ωςακολουθίατιμών (χρησιμοποιώνταςτησυνάρτησηcπουείδαμεστοπρώτομέροςτωνοδηγιών). Ανθέλουμε(δενείναιυποχρεωτικό)μπορούμεναπροσθέσουμεετικέτεςστιςσειρέςτου πλαισίουγιανααναγνωρίζουμεονομαστικάταδεδομένα: rownames(atoma)<-c("γιάννης","μαρία") Τώραμπορούμεναδούμεταπεριεχόμενατουπλαισίουδεδομένωνatoma: atoma sex age Γιάννης M 21 Μαρία F 22 ΤοRμαςδίνει,σεμορφήπίνακα,όλαταδεδομένατουπλαισίου.Γιαναεξετάσουμετηδομή τουπλαισίουμπορούμεναχρησιμοποιήσουμετησυνάρτησηstr,ηοποίαμαςδίνει περιληπτικάτοείδοςτωνδεδομένωνκαιενδεικτικέςτιμέςγιακάθεστήλη(μεταβλητή): str(atoma) 'data.frame': 2 obs. of 2 variables: $ sex: Factor w/ 2 levels "F","M": 2 1 $ age: num 21 22
Στηνπρώτησειράτηςαπόκρισης,ησυνάρτησηstrμαςενημερώνειότιτοatomaείναι πλαίσιοδεδομένων( data frame ),τοοποίοπεριέχειδύο«παρατηρήσεις» (obs.=observations)καιδύο«μεταβλητές».λέγοντας«παρατηρήσεις»αναφερόμαστεστις σειρέςτουπλαισίου,ενώλέγοντας«μεταβλητές»αναφερόμαστεστιςστήλες. Στιςεπόμενεςδύοσειρέςτηςαπόκρισηςδίνονταιοιπληροφορίεςπουαφορούνσεκαθεμιά μεταβλητήξεχωριστά: ΗπρώτημεταβλητήονομάζεταιsexκαιείναιτύπουFactor,δηλαδή«παράγοντας». Αυτό,στηνορολογίατουR,σημαίνειότιπρόκειταιγιακατηγορικήμεταβλητή.Περιλαμβάνει2 «επίπεδα»(levels),δηλαδήδύοκατηγορίες,οιοποίεςονομάζονται F και M (γυναίκες καιάντρες).το F αναφέρεταιπρώτοδιότιτοrχρησιμοποιείαπόμόνοτουαλφαβητική σειράγιατηναναφοράσεκατηγορίες.ησειράπεριγραφήςτηςμεταβλητήςsex ολοκληρώνεταιμεταπρώταστοιχείατηςστήλης,δηλαδήτοναριθμό2(αναφέρεταιστη δεύτερηκατηγορία, M )καιτοναριθμό1(πρώτηκατηγορία, F ).Αυτόμαςλέειότιηπρώτη σειράδεδομένωνείναιτύπου F καιηδεύτερητύπου M. Ηδεύτερημεταβλητήονομάζεταιageκαιείναιτύπουnum,δηλαδή«αριθμητική» (numeric).αυτό,στηνορολογίατουrσημαίνειότιπρόκειταιγιαποσοτικήμεταβλητή.δεν χρειάζονταιάλλεςδιευκρινίσεις,καθώςστιςποσοτικέςμεταβλητέςτανούμεραείναι αυτονόητα.ησειράολοκληρώνεταιμεταπρώταστοιχείατηςστήλης,δηλαδήτουςαριθμούς 21και22,οιοποίοιαντιστοιχούνστηνπρώτηκαιτηδεύτερησειράδεδομένων,αντίστοιχα. ΝαθυμάστεότιτακατηγορικάδεδομέναστοRείναιτύπουfactorενώταποσοτικά δεδομέναείναιτύπουnumeric. Όπωςβλέπουμεστηναπόκρισητηςσυνάρτησηςstr,πριναπόκάθεμεταβλητήεμφανίζεται έναδολλάριο($).τοσύμβολοτουδολλαρίουστοrχρησιμοποιείταιγιαναδηλώνουμε συγκεκριμένεςμεταβλητέςμέσασεπλαίσιαδεδομένων.έτσι,γιανααναφερθούμεστιςηλικίες (μεταβλητήage)πουβρίσκονταιμέσαστοπλαίσιοatomaγράφουμε atoma$age [1] 21 22 ενώγιανααναφερθούμεστοφύλο(μεταβλητήsex)γράφουμε atoma$sex [1] M F Levels: F M ΣτηνπερίπτωσητηςκατηγορικήςμεταβλητήςτοRμαςενημερώνεικαιγιατοσύνολοτων κατηγοριώνπουπεριλαμβάνειησυγκεκριμένημεταβλητή. Απομονώνονταςτιςμεταβλητέςμεαυτόντοντρόπο,μπορούμενατιςχειριστούμεωςκοινές ακολουθίες.γιαπαράδειγμα,μπορούμεναχρησιμοποιήσουμετιςσυναρτήσειςαπότοπρώτο μέροςτωνοδηγιώνγιαναυπολογίσουμετοάθροισμα,τοπλήθοςκλπ. sum(atoma$age) [1] 43 length(atoma$sex) [1] 2
Γιατηνεπεξεργασίαδεδομένωνσεπλαίσια,τοRμαςδίνειτησυνάρτησηfix,μετηνοποία μαςεμφανίζειέναειδικόπαράθυροστοοποίομπορούμενατροποποιήσουμεήνα προσθέσουμεστοιχείασεέναπλαίσιοδεδομένων. fix(atoma) Όταντελειώσουμετηνπροσθήκηήεπεξεργασίατωνστοιχείων,κλείνουμετοειδικόπαράθυρο μεκλικστο (πάνωδεξιάγωνία)καιημεταβλητήatomaενημερώνεταιαυτόματα. Γραφικήπαρουσίασηδεδομένων ΤοRδιαθέτειπολλέςσυναρτήσειςγιατηνπαρουσίασηκαιλεπτομερειακήεξέτασηκαι ανάλυσητωνδεδομένωνμας.αςυποθέσουμεότιέχουμεπέντεμετρήσειςύψουςενόςατόμου: alexh <- c( 1.85, 1.85, 1.81, 1.82, 1.83 ) Ημεταβλητήalexhπεριέχειμιαακολουθίαπέντεαριθμών.Μετησυνάρτησηtable («πίνακας»)μπορούμεναμετρήσουμεπόσεςφορέςεμφανίζεταικάθετιμή: table(alexh) alexh 1.81 1.82 1.83 1.85 1 1 1 2 Αυτόςείναιέναςαπλόςπίνακαςσυχνοτήτων.Βλέπουμεότιητιμή1.85εμφανίζεταιδύοφορές ενώοιάλλεςτιμέςαπόμίαφορά.ητιμήπουεμφανίζεταιτιςπερισσότερεςφορέςονομάζεται «δεσπόζουσα»(mode).ανηκαλύτερητιμήέβγαινειμεψηφοφορία,ηδεσπόζουσαείναιεκείνη πουθακέρδιζελόγωπλειοψηφίας. Τηνπληροφορίααυτήμπορούμενατηδούμεκαιγραφικά,μετησυνάρτησηplot: plot(table(alexh)) ΤοRανοίγειένανέοπαράθυρογιατηγραφικήαπεικόνιση,στοοποίοεμφανίζειτοεξής:
Εδώβλέπουμεέναραβδόγραμμαμετούψοςστονοριζόντιοάξονακαιτοπλήθοςτων αντίστοιχωνμετρήσεωνστονκατακόρυφο.κάθεμέτρησηεμφανίζεταισαμιαγραμμούλαπου φτάνεισεύψος1.0,ενώστούψος1.85,πουυπάρχουνδύομετρήσεις,εμφανίζονταιδύο γραμμούλεςημίαπάνωστηνάλλη,κάνονταςμαζίμιαμακρύτερηπουφτάνειστούψος2.0. Αυτόείναιέναδιάγραμμασυχνοτήτων,πουμαςλέειπόσοσυχνάεμφανίζεταικάθεαριθμός. Μπορούμενακαλλωπίσουμεκάπωςτηγραφικήαπεικόνιση,προσθέτονταςετικέτες: plot(table(alexh),las=1,xlab="ύψος",ylab="αριθµός µετρήσεων") Ηπαράμετροςlasστρίβειτηναρίθμησηστονκατακόρυφοάξοναώστεναδιαβάζεταιόρθια, ενώοιδύοπαράμετροιlab(απότοlabel=ετικέτα)καθορίζουντιςετικέτεςστονοριζόντιοάξονα (μετοx)καιστονκατακόρυφοάξονα(μετοy).
ΓιαναδούμεγραφικάτηνκατανομήτωνμετρήσεωνστηνκλίμακατοRμαςδίνειτησυνάρτηση hist(histogram=ιστόγραμμα).τηνκατανομήαυτή,μεπερισσότερηαριθμητικήλεπτομέρεια αλλάχωρίςγραφικά,μπορούμεναδούμεμετησυνάρτησηstemπουπαράγειδιάγραμμα μίσχου φύλλων. Γιατοσχετικόπλήθοςτωνεπιμέρουςκατηγοριώνσεκατηγορικάδεδομένα,έχουμετη συνάρτησηtable,πουείδαμεπαραπάνωότιμαςδίνειτονπίνακακατανομής,καθώςκαιτη συνάρτησηpie,πουμαςδίνειγραφικάτηνίδιαπληροφορίαμεκυκλικόδιάγραμμα(piechart). Δοκιμάστετιςσυναρτήσειςαυτέςσταδικάσαςδεδομένα! Περίληψηδεδομένων Μιαπολύχρήσιμησυνάρτησηγιαγρήγορηεπισκόπησητωνδεδομένωνμαςείναιηπερίληψη: summary(alexh) Min. 1st Qu. Median Mean 3rd Qu. Max. 1.810 1.820 1.830 1.832 1.850 1.850 Τααποτελέσματατηςπερίληψηςπεριλαμβάνουντηνελάχιστη(Min.)καιμέγιστη(Max.) τιμή,τομέσοόρο(mean),καθώςκαιτρειςακόμαδείκτες.οπιοσημαντικόςείναιηδιάμεσος (Median),δηλαδήητιμήπουείναιμεγαλύτερηαπότιςμισέςμετρήσειςκαιμικρότερηαπότις άλλεςμισές.γιανατοκαταλάβουμεκαλύτερα,αςδούμετιςτιμέςμαςσεαύξουσασειρά: sort(alexh) [1] 1.81 1.82 1.83 1.85 1.85 Ημικρότερητιμήείναι1.81(πρώτη)καιημεγαλύτερη1.85(τελευταία).Αφαιρώνταςδύοτιμές απόκάθεάκρημένειημεσαίαμέτρηση,πουείναι1.83.αυτήείναιηδιάμεσος. Ηελάχιστη,μέγιστη,μέση,καιδιάμεσοςτιμήυπολογίζονταιστοRαπευθείαςμετις συναρτήσειςmin, max, meanκαι median,αντίστοιχα. Ανκόψουμετοκάθεμισόστημέσημπορούμεναβρούμετηδιάμεσοτουκάθεμισού,που χωρίζουντοπρώτοτέταρτοκαιτοτελευταίοτέταρτοτωνδεδομένων.τασημείααυτά ονομάζονταιτεταρτημόρια:τοπρώτοτεταρτημόριο(1stquartile)χωρίζειτοχαμηλότερο25%. Τοδεύτεροτεταρτημόριοείναιηδιάμεσοςκαιχωρίζειτο50%.Τοτρίτοτεταρτημόριο(3rd quartile)χωρίζειτουψηλότερο25%.αυτέςείναιοιεπιπλέοντιμέςπουμαςδίνειηπερίληψη τουr.βέβαιαγιατόσολίγεςτιμέςπουέχουμεεδώαυτόδενέχειπολύνόημα,είναιόμωςπάρα πολύχρήσιμοσεμεταβλητέςμεδεκάδεςήεκατοντάδεςμετρήσεις. Ηπερίληψηεφαρμόζεταικαισεολόκληραπλαίσιαδεδομένων.Στηνπερίπτωσηαυτήμαςδίνει πληροφορίεςγιαόλεςτιςμεταβλητέςπουπεριλαμβάνονταιστοπλαίσιοδεδομένωνκαι προσαρμόζεταιαυτόματασεκάθεμεταβλητήανείναικατηγορικήήποσοτική.παράδειγμα: summary(atoma) sex age F:1 Min. :21.00 M:1 1st Qu.:21.25 Median :21.50 Mean :21.50 3rd Qu.:21.75 Max. :22.00
Χρήσηεξωτερικώναρχείων ΤοRμπορείναδιαβάσειδεδομέναπουέχουμεαποθηκευμένασεαρχείαστοδίσκοτου υπολογιστήμας.μετοrμπορούμεεπίσηςνααποθηκεύσουμεδεδομένα,αποτελέσματα επεξεργασίας,ήκαιτιςεντολέςκαισυναρτήσειςπουχρησιμοποιήσαμεγιατηνανάλυσήμας. Γιαναμπορείναχρησιμοποιηθείκάποιοεξωτερικόαρχείοπρέπειπροηγουμένωςνα υποδείξουμεστοrσεποιοφάκελοβρίσκονταιτααρχείαμας.ηεπιλογήφακέλουγίνεταιμέσα απότονκατάλογοεπιλογώνfile Changedir (dir=directory,δηλαδήκατάλογοςαρχείων). ΜετηνεπιλογήαυτήτοRμαςεμφανίζειτογνωστόπαράθυροεπιλογήςφακέλουτωνwindows. Εντοπίζουμεκαιεπιλέγουμετηντοποθεσίαόπουβρίσκονταιτααρχείαμας. Αφούεπιλέξουμετησωστήτοποθεσία,μπορούμεναφορτώσουμεέναπλαίσιοδεδομένων απευθείαςαπότοδίσκομετησυνάρτησηread.table,αναθέτονταςτοπεριεχόμενο απευθείαςσεμιαμεταβλητή.π.χ.,γιαναχρησιμοποιήσουμετακατηγορικάδεδομένατου3 ου κεφαλαίουτουβιβλίου,τααναθέτουμεστημεταβλητήch3ωςεξής: read.table("chapter3_1.rdata") - ch31 Προσοχή,ναμηνξεχνάμετηντελίτσαμέσαστοόνοματηςσυνάρτησης,χωρίςκενά! Ησυνάρτησηstrμαςδείχνειτοαποτέλεσματηςανάθεσης: str(ch31) 'data.frame': 264 obs. of 1 variable: $ education: Factor w/ 5 levels "Άλλο","Λύκειο",..: 5 5 5 5 5 5 5 5 5 5... Πρόκειταιγιαέναπλαίσιοδεδομένωνμεμιαμοναδικήκατηγορικήμεταβλητήμεόνομα educationηοποίαπεριέχειδεδομέναπέντεκατηγοριών.ταστοιχείατωνπρώτωνσειρών ανήκουνόλαστην5 η κατηγορία. Αργότεραθαδούμεπώςμπορούμενααποθηκεύσουμεδικάμαςδεδομένακαθώςκαινα χρησιμοποιήσουμεαρχείααναλύσεωνκαιεξωτερικάπακέτασυναρτήσεων. ΑθανάσιοςΠρωτόπαπας Μάρτιος2012
ΟδηγίεςχρήσηςτουR,μέρος3 ο Βιβλιοθήκες ΤοRδιαθέτειπολλέςχρήσιμεςσυναρτήσειςχωρίςειδικήαναζήτηση,αυτόματα.Υπάρχουν όμωςπάραπολλέςδιαφορετικέςσυναρτήσεις,πουχρησιμοποιούνταιγιαδιαφορετικάείδη αναλύσεων.οιπερισσότερεςείναιοργανωμένεςσεεξωτερικά«πακέτα»συναρτήσεων,που ονομάζονται«βιβλιοθήκες».ταπακέτααυτάπρέπειναταεγκαταστήσουμεστονυπολογιστή μαςξεχωριστάαπότοίδιοτοr.ηεγκατάστασηκατεβάζειαυτομάτωςτοπακέτοαπότο διαδίκτυο,άραπρέπειπρώταναεξασφαλίσουμεότιησύνδεσήμαςείναιενεργή.γιανα εγκαταστήσουμεέναπακέτο,π.χ.τοpsych(γιααναλύσειςπουχρησιμοποιούνταισυχνάστην ψυχολογία),χρησιμοποιούμετηνκατάλληλησυνάρτησημέσααπότοr: install.packages("psych", depend=t) Τηνπρώτηφοράπουθαχρησιμοποιήσουμεαυτήτησυνάρτηση,τοRθαμαςρωτήσειαπόπού νακατεβάσειτοπακέτο.επιλέγουμετηνελλάδαήάλληευρωπαϊκήχώρα,π.χ.αυστρία.στη συνέχειατοrκατεβάζεικαιεγκαθιστάό,τιείναιαπαραίτητογιατηλειτουργίατουπακέτου. Ανθέλουμεναεγκαταστήσουμεπερισσότεραπακέταμονομιάς,χρησιμοποιούμεακολουθία: install.packages(c("e1071","nortest","hmisc"), depend=t) ToRεγκαθιστάταπακέταμαζίμετυχόνπροαπαιτούμενα.Στοεξήςθαείναιδιαθέσιμαστον υπολογιστήμαςανεξάρτητααπότοανείμαστεσυνδεδεμένοιστοδιαδίκτυοήόχι. Γιαναχρησιμοποιήσουμεσυναρτήσειςαπότανέαπακέτα,πρέπειπρώτανα«φορτώσουμε»τη βιβλιοθήκηπουπεριλαμβάνειτοπακέτο,χρησιμοποιώνταςτησυνάρτησηlibrary.έτσι,αν έχουμεέναπλαίσιοδεδομένωνchκαιθέλουμεναχρησιμοποιήσουμετησυνάρτηση describeπουπεριλαμβάνεταιστηβιβλιοθήκητουπακέτουpsych: library(psych) describe(ch) ΗενεργοποίησητηςβιβλιοθήκηςπρέπειναγίνεταικάθεφοράπουξεκινάμετοR. Εναλλακτικά,ανθέλουμεναχρησιμοποιήσουμεσταγρήγορακάποιασυνάρτησηαπόένα πακέτο,χωρίςπροηγουμένωςναφορτώσουμεολόκληρητηβιβλιοθήκη,μπορούμενα δώσουμετοόνοματηςβιβλιοθήκηςμαζίμετησυνάρτηση,μεδυοάνω κάτωτελείεςανάμεσα: psych::describe(ch) Ημέθοδοςαυτήδενσυνιστάταιδιότιπρέπεικάθεφοράναξαναγράφουμεολόκληροτοόνομα τηςβιβλιοθήκης.είναιαπλούστερονατηφορτώσουμεμιαφοράμετησυνάρτησηlibrary. Εννοείταιότισεκάθεπερίπτωσηπρέπειπροηγουμένωςναέχουμεεγκαταστήσειτοαντίστοιχο πακέτο,μετησυνάρτησηinstall.packages (προσοχήστηντελίτσα!).
Δείκτεςπινάκων Στο2 ο μέροςτωνοδηγιώνείδαμεότιτοrχρησιμοποιείδομέςπουονομάζονται«πλαίσια δεδομένων»καιπεριέχουνμίαήπερισσότερεςμεταβλητές.οιδομέςαυτέςέχουντο χαρακτηριστικόότιαποτελούνταιαπόσειρές(εγγραφές)καιστήλες(μεταβλητές).π.χ.,οι πρώτεςσειρέςτουπίνακαύψουςτωνφοιτητώνείναιοιεξής: read.table("classheight.rdata")-ch ch sex h 1 f 1.57 2 f 1.65 3 f 1.65 4 f 1.72 5 m 1.83... ΤοRμαςεπιτρέπειναχειριστούμεσειρές,στήλες,καιμεμονωμέναστοιχεία,χρησιμοποιώντας ένασύστημαδεικτώνμέσασεαγκύλες(τιςτετράγωνεςπαρενθέσεις:[]).συγκεκριμένα,κάθε πίνακαςδύοδιαστάσεων(όπωςείναιτοπλαίσιοδεδομένων)ορίζεταιως[σειρές,στήλες]. Μέσαστιςαγκύλεςγράφουμετησειρά(ήσειρές)πουθέλουμε,κόμμα,καιτηστήλη(ήστήλες) πουθέλουμε.η1 η σειράτουπίνακαγράφεται[1,]ενώη2 η στήλητουπίνακαγράφεται[,2]: ch[1,] sex h 1 f 1.57 ch[,2] [1] 1.57 1.65 1.65 1.72 1.83 1.60 1.62 1.85 1.87 1.83 1.79 1.57... Ανθέλουμετοστοιχείοτης4 ης σειράς,2 ης στήλης,τοεντοπίζουμεωςεξής: ch[4,2] [1] 1.72 ΈναπολύχρήσιμοστοιχείοστοRείναιότιμπορούμεναεπιλέξουμεστοιχείαμεβάσηκάποια συνθήκη.π.χ.,μπορούμεναζητήσουμεόλεςτιςστήλεςαπότιςσειρέςτουπλαισίουchγιατις οποίεςημεταβλητήhείναιμεγαλύτερητου1.85,ωςεξής: ch[ch$h1.85,] sex h 9 m 1.87 27 m 1.87 29 m 1.89 Προσέξτεότιησυνθήκηch$h1.85τοποθετήθηκεπριναπότοκόμμα,άρακάνειεπιλογή σειρών.μετάτοκόμμαδεντοποθετήθηκετίποτα,άραδενεπιλέγονταιστήλες,καιεννοείται ότιτιςζητάμεόλες.μετονίδιοτρόποθαμπορούσαμεναζητήσουμετιςσειρέςστιςοποίεςτο φύλοείναιfκαιτούψοςείναιμεγαλύτεροτου1,70:
ch[ch$sex=="f" & ch$h1.70,] sex h 4 f 1.72 11 f 1.79 25 f 1.75 Προσέξτεότιοέλεγχοςισότηταςγίνεταιμετοδιπλόσύμβολο==(ίσον),ενώοέλεγχος ανισότηταςμετομονόσύμβολο(μεγαλύτερο).ησύζευξητωνδύοελέγχωνγίνεταιμετο σύμβολο&(λογικό«και»).ανθέλαμεδιάζευξη(δηλαδήήτοέναήτοάλλοήκαιταδύο)θα χρησιμοποιούσαμετοσύμβολο (κατακόρυφηκάθετος,λογικό«ή»),π.χ.: ch[ch$h1.85 ch$h<1.55,] sex h 9 m 1.87 16 f 1.51 27 m 1.87 29 m 1.89 Μπορούμε,φυσικάναεπιλέξουμεμόνομίαστήληαπότοαποτέλεσματηςσυνθήκης: ch[ch$h1.85 ch$h<1.55,1] [1] m f m m Levels: f m ch[ch$h1.85 ch$h<1.55,2] [1] 1.87 1.51 1.87 1.89 Στηνπερίπτωσηαυτήλαμβάνουμεωςαποτέλεσμαμιααπλήακολουθία.Τοτελευταίοθα μπορούσαμενατοπετύχουμεκαιεφαρμόζονταςτουςδείκτεςπάνωστηνίδιατημεταβλητή: ch$h[ch$h1.85 ch$h<1.55] [1] 1.87 1.51 1.87 1.89 Εδώ,φυσικάδενχρησιμοποιούμετοκόμμαπρινκλείσουμετηναγκύλη,αφούμιαμεταβλητή είναιμονοδιάστατηκαιδενπεριέχειστήλες. Ηεπιλογήστοιχείωνμετοσύστημαδεικτώνείναιπάραπολύχρήσιμηκαιθατησυναντήσετε σεπολλέςπεριπτώσειςδουλεύονταςστοrκαιμελετώνταςταδιαθέσιμαπαραδείγματα. Κιένακολπάκι:Γιαναμηνπληκτρολογούμεξανάταίδια,ότανθέλουμεναεπαναλάβουμε μιαπροηγούμενησυνάρτησηστοχώροαλληλεπίδρασηςτουrπατάμεαπλώςτο«βελάκι πάνω»στοπληκτρολόγιο,όσεςφορέςχρειάζεται,ώστεναεπανέλθειστηνενεργήγραμμή. Αρχείαεντολών Ανέπρεπεκάθεφοράναπληκτρολογούμεεκνέουόλεςτιςσυναρτήσειςπουχρειαζόμαστε,ή χρήσητουrθαήτανπολύκουραστικήκαικαθόλουαποδοτική.στηνπραγματικότητααυτόπου κάνουμεείναινααποθηκεύουμετιςεντολέςμαςσεένααρχείο,ώστεναμπορούμενατις τροποποιήσουμεήνατιςεκτελέσουμεαυτούσιεςοποιαδήποτεάλληστιγμή.τοαρχείοαυτό περιλαμβάνειακριβώςτηναλληλουχίατωνσυναρτήσεωνπουχρησιμοποιούμε.προαιρετικά,
προσθέτουμεσχόλιακαιεπεξηγήσειςώστεναμπορέσουμεναθυμηθούμετιακριβώςκάναμε μετιςσυναρτήσειςαυτέςκαιγιαποιολόγο.ουσιαστικά,δηλαδή,γράφουμεένα«πρόγραμμα» στη«γλώσσα»τουrγιαναεκτελείτιςαναλύσειςμας.στηνορολογίατουrένατέτοιο πρόγραμμαονομάζεταιscript. Ένααρχείοεντολώνπουπροϋπάρχει(π.χ.τοαποθηκεύσαμεστοπαρελθόνήμαςτοέστειλε κάποιοςάλλος)μπορούμενατοφορτώσουμεστοrαπότονκύριοκατάλογοεπιλογών(το «μενού»)στηνκορυφήτηςοθόνης.hεπιλογήfile Openscript μαςανοίγειτογνωστό παραθυράκιεπιλογήςαρχείωνγιαναφορτώσουμετοπρόγραμμάμας. Έναπρόγραμμαανοίγειστοδικότουπαραθυράκι,μέσαστονευρύτεροχώροτουR,ώστενα βλέπουμεκαθαράτησειράτωνσυναρτήσεωνπουπεριέχει.είναιανεξάρτητοαπότοχώρο όπουπληκτρολογούμετιςσυναρτήσειςμαςκαιβλέπουμετααποτελέσματα. Γιαναχρησιμοποιήσουμεμιασυνάρτησηαπότοπρόγραμμαπουανοίξαμε,πρώτατην «επιλέγουμε»μετοποντίκιήμετοπληκτρολόγιο(ctrl Shift βελάκιδεξιά/αριστερά). Εδώέχουμεεπιλέξειτησυνάρτησηυπολογισμούτουαθροίσματοςτηςακολουθίαςr3: ΣτησυνέχειακρατάμεπατημένοτοπλήκτροControlκαιπατάμετοπλήκτροR.Οσυνδυασμός αυτόςονομάζεταιctrl RκαιστοRσημαίνει«Run»(τρέξε),εκτελείδηλαδήό,τιείναιφωτισμένο, αντιγράφοντάςτοστοχώροαλληλεπίδρασηςμετοr. Στοπαραπάνωπαράδειγμαβλέπουμεότιμιασειράτουαρχείουαρχίζειμετοσύμβολο# (δίεση)καισυνεχίζει«άθροισμασχετικώνσυχνοτήτων...».αυτήησειράδενείναιεντολήγιατο R,αλλάεπεξηγηματικόσχόλιογιατοναναγνώστη/χρήστητουαρχείου.Τοσύμβολο# υποδεικνύειστοrνααγνοήσειοτιδήποτεβρίσκεταιπιοδεξιάαπόαυτό.τοχρησιμοποιούμε γιαναξεκινήσουμεμιασειράμεεπεξηγηματικάσχόλιαήγιαναπροσθέσουμεμιαεπεξήγηση στοτέλοςκάποιαςσυνάρτησης(σταδεξιάτης).ναχρησιμοποιείτεόσοπερισσότερα επεξηγηματικάσχόλιαμπορείτε,θαταβρείτεπολύχρήσιμαότανξαναχρειαστείτεένα παλαιότεροαρχείοεντολώνστοr(ήσεοποιαδήποτεάλληγλώσσαπρογραμματισμού). Ανθέλουμενααποθηκεύσουμεμιασειράσυναρτήσεωνγιαμελλοντικήχρήση,ξεκινάμεένα νέοπρόγραμμα,μετηνεπιλογήfile Newscriptαπότονκύριοκατάλογοεπιλογών.Αυτό
ανοίγειένακενόπαράθυρο,στοοποίοδακτυλογραφούμετιςσυναρτήσειςμας,ήτις αντιγράφουμεαπότοχώροαλληλεπίδρασηςμεcopy Paste(μετοποντίκιήμεCtrl C,Ctrl V). Αποθηκεύουμετηδουλειάμας,ενώτοπαράθυροτουπρογράμματοςείναιενεργό,μεκλικ επάνωστηδισκετούλα,μεctrl S,ήεπιλέγονταςFile Saveαπότονκύριοκατάλογο. Στησυνέχειατοαρχείοαυτόθαείναιδιαθέσιμονατοανοίξουμεκαινατο ξαναχρησιμοποιήσουμεοποιαδήποτεστιγμή,αρκείναεπιλέξουμεπρώτατοσωστόφάκελο (File Changedir )καιστησυνέχειατοίδιοτοαρχείο(file Openscript ). Προσοχή!Δενπρέπειναμπερδεύουμετηναποθήκευσηκαιανάγνωσηπρογραμμάτων (script)μετηναποθήκευσηκαιανάγνωσηπινάκωνδεδομένων(datatable).τα προγράμματααποθηκεύονταικαιφορτώνονταιαπότονκύριοκατάλογο(file )και εμφανίζονταισεδικότουςπαράθυρομέσαστοr.αντίθετα,ταδεδομένααποθηκεύονται καιφορτώνονταιαπόσυναρτήσειςκαιδενεμφανίζονταιπουθενάπαράμόνοαντα ζητήσουμε,είτεδακτυλογραφώνταςτοόνομάτουςείτελ.χ.μετησυνάρτησηfix. Έχουμεπροηγουμένωςσυναντήσειτησυνάρτησηread.tableπουφορτώνειέναπλαίσιο δεδομένωνκαιτοαναθέτεισεμιαμεταβλητή.αντίστοιχα,μπορούμενααποθηκεύσουμεένα πλαίσιοδεδομένων,τοοποίοπεριέχειστοιχείαπουπληκτρολογήσαμεήαποτελέσματα υπολογισμών,μετησυνάρτησηwrite.table.γιαπαράδειγμα,τοπλαίσιοδεδομένωναπό το2 ο μέροςτωνοδηγιών,μπορείναδημιουργηθείκαινααποθηκευτείωςεξής: atoma<-data.frame(sex=c("m","f"),age=c(21,22)) rownames(atoma)<-c("γιάννης","μαρία") write.table(atoma,"atoma.rdata") Τοπρώτοόρισματηςσυνάρτησηςwrite.tableείναιτοπλαίσιοδεδομένωνπουθέλουμενα αποθηκεύσουμεκαιτοδεύτεροόρισμαείναιτοόνοματουαρχείουμετοοποίοθα αποθηκευτείστοσκληρόδίσκομας.στοεξής,αυτότοπλαίσιοδεδομένωνθαείναιδιαθέσιμο οποτεδήποτε,επιλέγονταςτονκατάλληλοφάκελοεργασίαςκαιχρησιμοποιώνταςτη συνάρτησηread.table("atoma.rdata"). Συνοψίζοντας,τααρχείαδεδομένωνπουδιανέμονται(π.χ.classheight.Rdata)ταδιαβάζουμε μέσααπότοχώροαλληλεπίδρασης,ήμέσααπόπρογράμματα,μετησυνάρτηση read.table.ενώτααρχείαπρογραμμάτων(τασυνοδευτικάτωνκεφαλαίωντουβιβλίου, π.χ.chapter3.r)ταδιαβάζουμεαπότονκατάλογοεπιλογώνμεfile Openscript ΑθανάσιοςΠρωτόπαπας Μάιος2012