Εισαγωγή δεδομένων σε R: Διαβάστε αρχεία CSV, Excel, SPSS, Stata, SAS
⚡ Έξυπνη Σύνοψη
Η εισαγωγή δεδομένων σε R καλύπτει την ανάγνωση αρχείων CSV με read.csv(), βιβλίων εργασίας Excel με readxl και αρχείων SAS, STATA ή SPSS με haven. Αυτή η αναλυτική παρουσίαση δείχνει επίσης πώς να επιλέξετε με ακρίβεια φύλλα, γραμμές και περιοχές κελιών κατά την εισαγωγή.

Τα δεδομένα θα μπορούσαν να υπάρχουν σε διάφορες μορφές. Για κάθε μορφή R έχει συγκεκριμένη λειτουργία και όρισμα. Αυτό το σεμινάριο εξηγεί τον τρόπο εισαγωγής δεδομένων στο R.
Ανάγνωση αρχείων CSV
Η πιο ευρέως χρησιμοποιούμενη μορφή δεδομένων είναι η .csv, με τιμές διαχωρισμένες με κόμμα. Η R φορτώνει μια σειρά από βιβλιοθήκες κατά την εκκίνηση, συμπεριλαμβανομένου του πακέτου utils. Αυτό το πακέτο παρέχει την εντολή read.csv(), τον τυπικό τρόπο ανοίγματος ενός αρχείου CSV. Ακολουθεί η σύνταξη:
read.csv(file, header = TRUE, sep = ",")
Διαφωνία:
- φιλέτο: PATH όπου είναι αποθηκευμένο το αρχείο
- επί κεφαλής: επιβεβαιώστε εάν το αρχείο έχει κεφαλίδα ή όχι, από προεπιλογή, η κεφαλίδα έχει οριστεί σε TRUE
- Σεπτέμβριος: το σύμβολο που χρησιμοποιείται για τον διαχωρισμό της μεταβλητής. Από προεπιλογή, `,`.
Θα διαβάσουμε το όνομα αρχείου δεδομένων mtcats. Το αρχείο csv αποθηκεύεται στο διαδίκτυο. Εάν το αρχείο σας .csv είναι αποθηκευμένο τοπικά, μπορείτε να αντικαταστήσετε το PATH μέσα στο απόσπασμα κώδικα. Μην ξεχάσετε να το τυλίξετε μέσα στο " ". Το PATH πρέπει να είναι μια τιμή συμβολοσειράς.
Για χρήστη mac, η διαδρομή για το φάκελο λήψης είναι:
"/Users/USERNAME/Downloads/FILENAME.csv"
Για χρήστες Windows:
"C:\Users\USERNAME\Downloads\FILENAME.csv"
Σημειώστε ότι, θα πρέπει πάντα να καθορίζουμε την επέκταση του ονόματος αρχείου.
- . Csv
- . XLSX
- . Txt
- ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <- read.csv(PATH, header = TRUE, sep = ',') length(df)
Παραγωγή:
## [1] 12
class(df$X)
Παραγωγή:
## [1] "factor"
Στις εκδόσεις R πριν από την έκδοση 4.0.0, η συνάρτηση read.csv() μετέτρεπε κάθε στήλη χαρακτήρων σε παράγοντα, γι' αυτό και η συνάρτηση class(df$X) επιστρέφει την τιμή "factor" παραπάνω. Μπορείτε να την απενεργοποιήσετε με την συνάρτηση stringsAsFactors = FALSE.
⚠️ Σημείωση έκδοσης: αφού Ε 4.0.0 Η προεπιλογή είναι stringsAsFactors = FALSE, επομένως οι στήλες χαρακτήρων παραμένουν χαρακτήρες και το πρώτο παράδειγμα επιστρέφει πλέον "character" σε μια σύγχρονη εγκατάσταση. Η ρητή διαβίβαση του ορίσματος, όπως παρακάτω, δίνει το ίδιο αποτέλεσμα σε κάθε έκδοση και είναι η ασφαλέστερη συνήθεια.
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE) class(df$X)
Παραγωγή:
## [1] "character"
Η κλάση για τη μεταβλητή X είναι πλέον χαρακτήρας.
read.csv() vs read_csv(): Ποιο πρέπει να χρησιμοποιήσετε;
Η συνάρτηση read.csv() συνοδεύεται από την βασική έκδοση R και δεν χρειάζεται πακέτο. Το πακέτο readr προσθέτει την συνάρτηση read_csv(), η οποία είναι ταχύτερη και λαμβάνει λιγότερες αποφάσεις εκ μέρους σας.
| Κριτήρια | read.csv() (χρησιμοποιούμενα προγράμματα) | read_csv() (readr) |
|---|---|---|
| Απαιτείται πακέτο | Ν/Α | αναγνώστης |
| Ταχύτητα σε μεγάλα αρχεία | Βραδύτερη | Αρκετές φορές πιο γρήγορα |
| Επιστροφές | data.frame | κούπα |
| Ονόματα στηλών | Τα κενά μετατράπηκαν σε κουκκίδες | Διατηρήθηκε ακριβώς όπως γράφτηκε |
| Ανίχνευση τύπου | Σιωπηλός | Αναφέρεται σε μια προδιαγραφή στήλης |
library(readr) df <- read_csv(PATH) # For very large files, data.table::fread() is faster still library(data.table) df <- fread(PATH)
Χρησιμοποιήστε την read.csv() για μικρά αρχεία και σενάρια που πρέπει να εκτελούνται χωρίς επιπλέον πακέτα. Χρησιμοποιήστε την read_csv() όταν το αρχείο είναι μεγάλο ή όταν η διατήρηση των ακριβών ονομάτων στηλών έχει σημασία.
Ανάγνωση αρχείων Excel
Excel Τα αρχεία είναι πολύ δημοφιλή μεταξύ των αναλυτών δεδομένων. Τα υπολογιστικά φύλλα είναι εύκολα στη χρήση και ευέλικτα. Το R είναι εξοπλισμένο με βιβλιοθήκη readxl για εισαγωγή υπολογιστικού φύλλου Excel.
Χρησιμοποιήστε αυτόν τον κωδικό
require(readxl)
για να ελέγξετε εάν το readxl είναι εγκατεστημένο στο μηχάνημά σας. Εάν εγκαταστήσετε το r με το r-conda-essential, η βιβλιοθήκη είναι ήδη εγκατεστημένη. Θα πρέπει να δείτε στο παράθυρο εντολών:
Παραγωγή:
Loading required package: readxl.
Εάν το πακέτο δεν είναι εγκατεστημένο, μπορείτε να το εγκαταστήσετε με το conda. βιβλιοθήκη ή στο τερματικό, χρησιμοποιήστε conda install -c mittner r-readxl.
Χρησιμοποιήστε την ακόλουθη εντολή για να φορτώσετε τη βιβλιοθήκη για να εισαγάγετε αρχεία excel.
library(readxl)
readxl_example()
Χρησιμοποιούμε τα παραδείγματα που περιλαμβάνονται στο πακέτο readxl κατά τη διάρκεια αυτού του σεμιναρίου.
Χρησιμοποιήστε τον κωδικό
readxl_example()
για να δείτε όλα τα διαθέσιμα υπολογιστικά φύλλα στη βιβλιοθήκη.
Για να ελέγξετε την τοποθεσία ενός συγκεκριμένου υπολογιστικού φύλλου, δώστε το όνομά του:
readxl_example("geometry.xls")
Εάν εγκαταστήσετε το R με conda, τα υπολογιστικά φύλλα βρίσκονται στο Anaconda3/lib/R/library/readxl/extdata/filename.xls
read_excel()
Η συνάρτηση read_excel() ανοίγει τόσο τις επεκτάσεις .xls όσο και .xlsx και επιλέγει αυτόματα τον σωστό αναλυτή.
Η σύνταξη είναι:
read_excel(PATH, sheet = NULL, range= NULL, col_names = TRUE) arguments: -PATH: Path where the excel is located -sheet: Select the sheet to import. By default, all -range: Select the range to import. By default, all non-null cells -col_names: Select the columns to import. By default, all non-null columns
Μπορούμε να εισαγάγουμε τα υπολογιστικά φύλλα από τη βιβλιοθήκη του readxl και να μετρήσουμε τον αριθμό των στηλών στο πρώτο φύλλο.
# Store the path of `datasets.xlsx` example <- readxl_example("datasets.xlsx") # Import the spreadsheet df <- read_excel(example) # Count the number of columns length(df)
Παραγωγή:
## [1] 5
excel_sheets()
Το αρχείο databases.xlsx αποτελείται από 4 φύλλα. Μπορούμε να βρούμε ποια φύλλα είναι διαθέσιμα στο βιβλίο εργασίας χρησιμοποιώντας τη συνάρτηση excel_sheets().
example <- readxl_example("datasets.xlsx")
excel_sheets(example)
Παραγωγή:
[1] "iris" "mtcars" "chickwts" "quakes"
Εάν ένα φύλλο εργασίας περιλαμβάνει πολλά φύλλα, είναι εύκολο να επιλέξετε ένα συγκεκριμένο φύλλο χρησιμοποιώντας τα ορίσματα του φύλλου. Μπορούμε να καθορίσουμε το όνομα του φύλλου ή του ευρετηρίου φύλλου. Μπορούμε να επαληθεύσουμε εάν και οι δύο συναρτήσεις επιστρέφουν την ίδια έξοδο με την identical().
example <- readxl_example("datasets.xlsx") quake <- read_excel(example, sheet = "quakes") quake_1 <-read_excel(example, sheet = 4) identical(quake, quake_1)
Παραγωγή:
## [1] TRUE
Μπορούμε να ελέγξουμε ποια κελιά θα διαβάσουμε με 2 τρόπους
- Χρησιμοποιήστε το όρισμα n_max για να επιστρέψετε n σειρές
- Χρησιμοποιήστε το όρισμα εύρους σε συνδυασμό με cell_rows ή cell_cols
Για παράδειγμα, ορίσαμε n_max ίσο με 5 για εισαγωγή των πρώτων πέντε σειρών.
# Read the first five row: with header iris <-read_excel(example, n_max =5, col_names =TRUE)
Αν αλλάξουμε col_names σε FALSE, το R δημιουργεί αυτόματα τις κεφαλίδες.
# Read the first five row: without header iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)
iris_no_header
Στο πλαίσιο δεδομένων iris_no_header, το readxl δημιούργησε πέντε ονόματα placeholder. Οι παλαιότερες εκδόσεις παρήγαγαν από X__1 έως X__5, ενώ οι τρέχουσες εκδόσεις παράγουν …1 έως …5.
Μπορούμε επίσης να χρησιμοποιήσουμε το εύρος ορισμάτων για να επιλέξουμε γραμμές και στήλες στο υπολογιστικό φύλλο. Στον παρακάτω κώδικα, χρησιμοποιούμε το στυλ excel για να επιλέξουμε το εύρος A1 έως B5.
# Read rows A1 to B5 example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE) dim(example_1)
Παραγωγή:
## [1] 4 2
Η συνάρτηση example_1 επιστρέφει 4 γραμμές και 2 στήλες. Το εύρος A1:B5 καλύπτει πέντε γραμμές υπολογιστικού φύλλου, αλλά η πρώτη χρησιμοποιείται ως κεφαλίδα, γι' αυτό και η διάσταση είναι 4 επί 2.
Στο δεύτερο παράδειγμα, χρησιμοποιούμε τη συνάρτηση cell_rows() που ελέγχει το εύρος των γραμμών που θα επιστρέψουν. Αν θέλουμε να εισάγουμε τις σειρές 1 έως 5, μπορούμε να ορίσουμε cell_rows(1:5). Σημειώστε ότι το cell_rows(1:5) επιστρέφει την ίδια έξοδο με το cell_rows(5:1).
# Read rows 1 to 5 example_2 <-read_excel(example, range =cell_rows(1:5),col_names =TRUE) dim(example_2)
Παραγωγή:
## [1] 4 5
Το example_2, αντίθετα, είναι 4 επί 5. Η cell_rows(1:5) αντιμετωπίζει και πάλι την πρώτη γραμμή ως κεφαλίδα, επομένως επιστρέφονται τέσσερις γραμμές δεδομένων και στις πέντε στήλες.
Σε περίπτωση που θέλουμε να εισαγάγουμε σειρές που δεν ξεκινούν από την πρώτη σειρά, πρέπει να συμπεριλάβουμε col_names = FALSE. Εάν χρησιμοποιήσουμε range = cell_rows(2:5), γίνεται προφανές ότι το πλαίσιο δεδομένων μας δεν έχει πλέον κεφαλίδα.
iris_row_with_header <-read_excel(example, range =cell_rows(2:3), col_names=TRUE) iris_row_no_header <-read_excel(example, range =cell_rows(2:3),col_names =FALSE)
Μπορείτε επίσης να επιλέξετε στήλες ανά γράμμα, ακριβώς όπως στο Excel:
# Select columns A and B col <- read_excel(example, range = cell_cols("A:B")) dim(col)
Παραγωγή:
## [1] 150 2
Σημείωση: range = cell_cols(“A:B”), επιστρέφει την έξοδο όλων των κελιών με μη μηδενική τιμή. Το σύνολο δεδομένων περιέχει 150 σειρές, επομένως, η read_excel() επιστρέφει σειρές έως και 150. Αυτό επαληθεύεται με τη συνάρτηση dim().
Το όρισμα na λέει στην read_excel() ποιες τιμές πρέπει να θεωρηθούν ελλείπουσες. Μετρήστε τες με sum() και is.na():
- άθροισμα
- είναι.να
Εδώ είναι ο κωδικός
iris_na <-read_excel(example, na ="setosa") sum(is.na(iris_na))
Παραγωγή:
## [1] 50
Μας λείπουν 50 τιμές, οι οποίες είναι οι σειρές που ανήκουν στο είδος setosa.
Εισαγωγή δεδομένων από άλλο στατιστικό λογισμικό
Τα αρχεία από άλλα στατιστικά πακέτα εισάγονται με το επίνειο πακέτο, το οποίο υποστηρίζει SAS, STATA και SPSS. Μπορούμε να χρησιμοποιήσουμε την ακόλουθη συνάρτηση για να ανοίξουμε διαφορετικούς τύπους συνόλων δεδομένων, ανάλογα με την επέκταση του αρχείου:
- SAS: read_sas()
- STATA: read_dta() (ή read_stata(), που είναι πανομοιότυπα)
- SPSS: read_sav() ή read_por(). Πρέπει να ελέγξουμε την επέκταση
Κάθε μία από αυτές τις συναρτήσεις χρειάζεται μόνο ένα όρισμα, τη ΔΙΑΔΡΟΜΗ όπου αποθηκεύεται το αρχείο, και κάθε μία δέχεται ένα URL τόσο εύκολα όσο ένα τοπικό μονοπάτι.
library(haven)
παράδεισος έρχεται με conda r-ουσιαστικό διαφορετικά πηγαίνετε στο σύνδεσμος ή στο τερματικό conda install -c conda-forge r-haven
Ανάγνωση αρχείων SAS
Για το παράδειγμά μας, πρόκειται να χρησιμοποιήσουμε το σύνολο δεδομένων αποδοχής από το IDRE.
PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true' df <- read_sas(PATH_sas) head(df)
Παραγωγή:
## # A tibble: 6 x 4 ## ADMIT GRE GPA RANK ## <dbl> <dbl> <dbl> <dbl> ## 1 0 380 3.61 3 ## 2 1 660 3.67 3 ## 3 1 800 4.00 1 ## 4 1 640 3.19 4 ## 5 0 520 2.93 4 ## 6 1 760 3.00 2
Ανάγνωση αρχείων STATA
Για αρχεία δεδομένων STATA μπορείτε να χρησιμοποιήσετε read_dta(). Χρησιμοποιούμε ακριβώς το ίδιο σύνολο δεδομένων αλλά αποθηκεύουμε σε αρχείο .dta.
PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true' df <- read_dta(PATH_stata) head(df)
Παραγωγή:
## # A tibble: 6 x 4 ## admit gre gpa rank ## <dbl> <dbl> <dbl> <dbl> ## 1 0 380 3.61 3 ## 2 1 660 3.67 3 ## 3 1 800 4.00 1 ## 4 1 640 3.19 4 ## 5 0 520 2.93 4 ## 6 1 760 3.00 2
Ανάγνωση αρχείων SPSS
Η συνάρτηση read_sav() ανοίγει ένα αρχείο SPSS, το οποίο φέρει την επέκταση .sav.
PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true' df <- read_sav(PATH_spss) head(df)
Παραγωγή:
## # A tibble: 6 x 4 ## admit gre gpa rank ## <dbl> <dbl> <dbl> <dbl> ## 1 0 380 3.61 3 ## 2 1 660 3.67 3 ## 3 1 800 4.00 1 ## 4 1 640 3.19 4 ## 5 0 520 2.93 4 ## 6 1 760 3.00 2
καλυτερα Practices for Data Import
Η εκτέλεση της παρακάτω λίστας ελέγχου πριν από την εισαγωγή εξοικονομεί το μεγαλύτερο μέρος της εργασίας καθαρισμού στη συνέχεια:
- Η τυπική μορφή για ένα υπολογιστικό φύλλο είναι η χρήση των πρώτων σειρών ως κεφαλίδας (συνήθως όνομα μεταβλητών).
- Αποφύγετε τα κενά διαστήματα σε ένα αρχείο ή όνομα στήλης, επειδή μπορούν να διαβαστούν ως διαχωριστικό στηλών. Χρησιμοποιήστε μια υπογράμμιση.
- Προτιμώνται τα σύντομα ονόματα
- Μην χρησιμοποιείτε σύμβολα σε ένα όνομα. Γράψτε exchange_rate_dollar_euro αντί για exchange_rate_$_€.
- Κωδικοποιήστε τις τιμές που λείπουν ως NA αντί για κενά, παύλες ή αριθμούς-φρουρούς όπως -99, οι οποίοι διαφορετικά θα πρέπει να καθαριστούν στη συνέχεια.
Εισαγωγή δεδομένων σε R: Αναφορά συνάρτησης
Ο παρακάτω πίνακας παραθέτει τη συνάρτηση εισαγωγής για κάθε τύπο αρχείου, τη βιβλιοθήκη που την παρέχει και τα προεπιλεγμένα ορίσματά της:
| Βιβλιοθήκη | Σκοπός | Λειτουργία | Προεπιλεγμένα επιχειρήματα |
|---|---|---|---|
| σκεύη | Διαβάστε το αρχείο CSV | read.csv() | αρχείο, κεφαλίδα = TRUE, sep = “,” |
| readxl | Διαβάστε το αρχείο EXCEL | read_excel() | διαδρομή, εύρος = NULL, ονόματα_κολώνων = TRUE |
| επίνειο | Διαβάστε το αρχείο SAS | read_sas() | μονοπάτι |
| επίνειο | Διαβάστε το αρχείο STATA | read_dta() / read_stata() | μονοπάτι |
| επίνειο | Ανάγνωση αρχείου SPSS | read_sav() | μονοπάτι |
Ο δεύτερος πίνακας δείχνει τους τρόπους εισαγωγής μιας επιλογής με τη μέθοδο read_excel():
| Λειτουργία | Σκοπός | Επιχειρήματα |
|---|---|---|
| read_excel() | Διαβάστε n αριθμό σειρών | n_max = 10 |
| Επιλέξτε γραμμές και στήλες όπως στο excel | εύρος = "A1:D10" | |
| Επιλέξτε σειρές με ευρετήρια | range= cell_rows (1:3) | |
| Επιλέξτε στήλες με γράμματα | range = cell_cols ("A:C") |







