Εισαγωγή δεδομένων σε R: Διαβάστε αρχεία CSV, Excel, SPSS, Stata, SAS

⚡ Έξυπνη Σύνοψη

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

  • 📄 Εισαγωγή CSV: read.csv(file, header = TRUE, sep = “,”) φορτώνει ένα αρχείο διαχωρισμένο με κόμμα από μια τοπική διαδρομή ή ένα URL.
  • ⚠️ Αλλαγή έκδοσης: Από την έκδοση R 4.0.0, οι στήλες χαρακτήρων παραμένουν χαρακτήρες, επειδή η συνάρτηση stringsAsFactors έχει πλέον την προεπιλεγμένη τιμή FALSE.
  • 📗 Εισαγωγή Excel: Η συνάρτηση read_excel() από το readxl χειρίζεται τόσο τα αρχεία .xls όσο και τα αρχεία .xlsx, και η συνάρτηση excel_sheets() εμφανίζει πρώτα κάθε φύλλο εργασίας.
  • 🎯 Ακριβής επιλογή: Η συνάρτηση n_max περιορίζει τις γραμμές, η συνάρτηση range δέχεται σημειογραφία Excel και η συνάρτηση cell_rows() ή cell_cols() δέχεται ευρετήρια και γράμματα.
  • 🔄 Άλλο λογισμικό: Το haven παρέχει τις read_sas(), read_dta() και read_sav(), καθεμία από τις οποίες χρειάζεται μόνο μια διαδρομή ή URL.
  • 🧹 Καθαρή εισαγωγή: Κωδικοποιήστε τις τιμές που λείπουν ως NA και αποφύγετε τα κενά ή τα σύμβολα στα ονόματα των στηλών πριν από την εισαγωγή.

Εισαγωγή δεδομένων σε R

Τα δεδομένα θα μπορούσαν να υπάρχουν σε διάφορες μορφές. Για κάθε μορφή 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

Για να ελέγξετε την τοποθεσία ενός συγκεκριμένου υπολογιστικού φύλλου, δώστε το όνομά του:

readxl_example("geometry.xls")

Readxl_Example

Εάν εγκαταστήσετε το 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 τρόπους

  1. Χρησιμοποιήστε το όρισμα n_max για να επιστρέψετε n σειρές
  2. Χρησιμοποιήστε το όρισμα εύρους σε συνδυασμό με cell_rows ή cell_cols

Για παράδειγμα, ορίσαμε n_max ίσο με 5 για εισαγωγή των πρώτων πέντε σειρών.

# Read the first five row: with header
iris <-read_excel(example, n_max =5, col_names =TRUE)

Excel_Φύλλα

Αν αλλάξουμε 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_Φύλλα

Μπορούμε επίσης να χρησιμοποιήσουμε το εύρος ορισμάτων για να επιλέξουμε γραμμές και στήλες στο υπολογιστικό φύλλο. Στον παρακάτω κώδικα, χρησιμοποιούμε το στυλ 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.

Excel_Φύλλα

Στο δεύτερο παράδειγμα, χρησιμοποιούμε τη συνάρτηση 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) αντιμετωπίζει και πάλι την πρώτη γραμμή ως κεφαλίδα, επομένως επιστρέφονται τέσσερις γραμμές δεδομένων και στις πέντε στήλες.

Excel_Φύλλα

Σε περίπτωση που θέλουμε να εισαγάγουμε σειρές που δεν ξεκινούν από την πρώτη σειρά, πρέπει να συμπεριλάβουμε 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_Φύλλα

Μπορείτε επίσης να επιλέξετε στήλες ανά γράμμα, ακριβώς όπως στο 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():

  1. άθροισμα
  2. είναι.να

Εδώ είναι ο κωδικός

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")

Συχνές Ερωτήσεις

Η έκδοση R 4.0.0 άλλαξε την προεπιλεγμένη τιμή των stringsAsFactors από TRUE σε FALSE. Οι στήλες χαρακτήρων παραμένουν πλέον χαρακτήρες. Μεταβιβάστε το όρισμα ρητά εάν το σενάριό σας πρέπει να συμπεριφέρεται με τον ίδιο τρόπο σε παλαιότερες εκδόσεις R.

Αντικαταστήστε το URL με την πλήρη τοπική διαδρομή σε εισαγωγικά, όπως "C:/Users/name/data.csv". Χρησιμοποιήστε καθέτους ή διπλές ανάστροφες καθέτους Windowsκαι επιβεβαιώστε τον κατάλογο εργασίας με getwd().

Το readxl διαβάζει .xls και .xlsx σε καθαρή R χωρίς Java εξάρτηση. Μόνο το παλαιότερο πακέτο xlsx απαιτεί Java μέσω rJava, γι' αυτό και το readxl είναι η συνιστώμενη επιλογή.

Οι σιωπηλές αλλαγές τύπου κατά την εισαγωγή αποτελούν μια συνηθισμένη πηγή μη αναπαραγώγιμων αποτελεσμάτων τεχνητής νοημοσύνης. Η ρητή δήλωση τύπων στηλών, όπως τους αναφέρει η συνάρτηση read_csv(), διασφαλίζει ότι ένα σύνολο δεδομένων εκπαίδευσης φορτώνεται με τον ίδιο τρόπο κάθε φορά.

Ναι. Οι βοηθοί τεχνητής νοημοσύνης μπορούν να διαγνώσουν λανθασμένους διαχωριστές, προβλήματα κωδικοποίησης και εσφαλμένη ανάγνωση κεφαλίδων από ένα μήνυμα σφάλματος. Να επιβεβαιώνετε πάντα το αποτέλεσμα με str() ή glimpse() πριν συνεχίσετε την ανάλυση.

Συνοψίστε αυτήν την ανάρτηση με: