R Select(), Filter(), Arrange(), Pipeline with Example

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

Οι επιλογές, το φιλτράρισμα και η διάταξη στην R είναι τα τρία ρήματα dplyr που ανάγουν ένα πλαίσιο δεδομένων στις στήλες, τις γραμμές και τη σειρά που χρειάζεστε. Αυτή η αναλυτική παρουσίαση τα συνδέει με τον τελεστή pipe σε ένα σύνολο δεδομένων χρόνων διαδρομής 205 γραμμών.

  • 📋 Επιλογή στήλης: Η select(df, A, B) διατηρεί επώνυμες στήλες, η select(df, A:C) διατηρεί ένα εύρος και η select(df, -C) αφαιρεί μία.
  • 🔎 Φιλτράρισμα γραμμών: Η συνάρτηση filter(df, condition) διατηρεί τις αντίστοιχες γραμμές και οι συνθήκες συνδυάζονται με το σύμβολο "και" για το AND ή την κατακόρυφη γραμμή για το OR.
  • 🔣 Ταξινόμηση: Η συνάρτηση arrange() ταξινομεί τις γραμμές αύξουσα από προεπιλογή και η συνάρτηση desc() αντιστρέφει οποιαδήποτε μεμονωμένη στήλη.
  • 🔗 Pipe Operaβραχώδης κορυφή: Ο τελεστής %>% μεταβιβάζει κάθε αποτέλεσμα απευθείας στο επόμενο ρήμα, επομένως κανένα ενδιάμεσο αντικείμενο δεν γεμίζει το περιβάλλον.
  • 🧹 Βοηθητικές λειτουργίες: Οι starts_with(), contains() και where() επιλέγουν στήλες κατά μοτίβο ή τύπο αντί για όνομα.
  • 📐 Η σειρά των ρημάτων έχει σημασία: Φιλτράρετε νωρίς για να συρρικνώσετε τα δεδομένα, στη συνέχεια επιλέξτε και μετά τακτοποιήστε, κάτι που διατηρεί κάθε επόμενο βήμα φθηνότερο.

Επιλογή φίλτρου R Τακτοποίηση αγωγού

Τι είναι το dplyr στην R;

dplyr είναι το πακέτο χειρισμού δεδομένων του tidyverse. Αντικαθιστά τη σημειογραφία βάσης σε παρένθεση R με ένα μικρό σύνολο ρημάτων, καθένα από τα οποία ονομάζεται από την ενέργεια που εκτελεί και το καθένα λαμβάνει το πλαίσιο δεδομένων ως πρώτο όρισμά του. Αυτό το συνεπές σχήμα είναι που επιτρέπει στα ρήματα να συνδέονται αλυσιδωτά.

Ρήμα Πράξεις σε Τι κάνει
επιλέγω() Στήλες Διατηρεί ή απορρίπτει μεταβλητές
φίλτρο() Γραμμές Διατηρεί τις γραμμές που ταιριάζουν με μια συνθήκη
κανονίζω() Γραμμές Αναδιάταξη γραμμών κατά μία ή περισσότερες στήλες
αλλάσσω() Στήλες Δημιουργεί ή τροποποιεί μια μεταβλητή
συνοψίζω() Ολόκληρο το τραπέζι Συμπτύσσει πολλές γραμμές σε ένα μόνο στατιστικό στοιχείο
group_by() Ολόκληρο το τραπέζι Διαχωρίζει τα δεδομένα έτσι ώστε τα ρήματα αργότερα να εκτελούνται ανά ομάδα

Αυτό το σεμινάριο καλύπτει τα τρία πρώτα ρήματα συν τον σωλήνα. εκπαιδευτικό σεμινάριο συνάρτησης συγκεντρωτικών αποτελεσμάτων Καλύπτει σε βάθος τις συναρτήσεις group_by() και summarize().

Σύνολο δεδομένων που χρησιμοποιήθηκε σε αυτό το σεμινάριο

Η βιβλιοθήκη που ονομάζεται dplyr περιέχει πολύτιμα ρήματα για πλοήγηση μέσα στο σύνολο δεδομένων. Σε αυτό το σεμινάριο, θα χρησιμοποιήσετε το σύνολο δεδομένων Χρόνοι μετακίνησης. Το σύνολο δεδομένων καταγράφει τα ταξίδια που κάνει ένας οδηγός μεταξύ σπιτιού και χώρου εργασίας. Υπάρχουν δεκατέσσερις μεταβλητές στο σύνολο δεδομένων, όπως:

  • DayOfWeek: Προσδιορίστε την ημέρα της εβδομάδας που ο οδηγός χρησιμοποιεί το αυτοκίνητό του
  • Απόσταση: Η συνολική απόσταση του ταξιδιού
  • MaxSpeed: Η μέγιστη ταχύτητα του ταξιδιού
  • TotalTime: Η διάρκεια σε λεπτά του ταξιδιού

Το σύνολο δεδομένων περιέχει 205 παρατηρήσεις και οι βόλτες πραγματοποιήθηκαν από Monday έως την Παρασκευή.

Πρώτα απ 'όλα, πρέπει να:

  • φορτώστε το σύνολο δεδομένων
  • ελέγξτε τη δομή των δεδομένων.

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

library(dplyr) 
PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/travel_times.csv"
df <- read.csv(PATH)
glimpse(df)

Παραγωγή:

## Observations: 205
## Variables: 14
## $ X              <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ...
## $ Date           <fctr> 1/6/2012, 1/6/2012, 1/4/2012, 1/4/2012, 1/3/20...
## $ StartTime      <fctr> 16:37, 08:20, 16:17, 07:53, 18:57, 07:57, 17:3...
## $ DayOfWeek      <fctr> Friday, Friday, Wednesday, Wednesday, Tuesday,...
## $ GoingTo        <fctr> Home, GSK, Home, GSK, Home, GSK, Home, GSK, GS...
## $ Distance       <dbl> 51.29, 51.63, 51.27, 49.17, 51.15, 51.80, 51.37...
## $ MaxSpeed       <dbl> 127.4, 130.3, 127.4, 132.3, 136.2, 135.8, 123.2...
## $ AvgSpeed       <dbl> 78.3, 81.8, 82.0, 74.2, 83.4, 84.5, 82.9, 77.5,...
## $ AvgMovingSpeed <dbl> 84.8, 88.9, 85.8, 82.9, 88.1, 88.8, 87.3, 85.9,...
## $ FuelEconomy    <fctr> , , , , , , -, -, 8.89, 8.89, 8.89, 8.89, 8.89...
## $ TotalTime      <dbl> 39.3, 37.9, 37.5, 39.8, 36.8, 36.8, 37.2, 37.9,...
## $ MovingTime     <dbl> 36.3, 34.9, 35.9, 35.6, 34.8, 35.0, 35.3, 34.3,...
## $ Take407All     <fctr> No, No, No, No, No, No, No, No, No, No, No, No...
## $ Comments       <fctr> , , , , , , , , , , , , , , , Put snow tires o...	

Η μεταβλητή Σχόλια χρειάζεται σαφώς μια πιο προσεκτική ματιά: οι πρώτες παρατηρήσεις είναι όλες κενές.

sum(df$Comments =="")

Code εξήγηση

  • sum(df$Comments == “”): Μετράει τις παρατηρήσεις που ισούται με μια κενή συμβολοσειρά στη στήλη Σχόλια του df

Παραγωγή:

## [1] 181

Με τα δεδομένα φορτωμένα, ξεκινήστε με το ρήμα που περικόπτει τις στήλες.

επιλέγω()

Θα ξεκινήσουμε με το ρήμα select(). Δεν χρειαζόμαστε απαραίτητα όλες τις μεταβλητές και μια καλή πρακτική είναι να επιλέγουμε μόνο τις μεταβλητές που θεωρείτε σχετικές.

Έχουμε 181 ελλείπουσες παρατηρήσεις, σχεδόν το 90 τοις εκατό του συνόλου δεδομένων. Εάν αποφασίσετε να τα εξαιρέσετε, δεν θα μπορείτε να συνεχίσετε την ανάλυση.

Η άλλη δυνατότητα είναι να απορρίψετε τη μεταβλητή Comment με το ρήμα select().

Μπορούμε να επιλέξουμε μεταβλητές με διαφορετικούς τρόπους με το select(). Σημειώστε ότι το πρώτο όρισμα είναι το σύνολο δεδομένων.

- `select(df, A, B ,C)`: Select the variables A, B and C from df dataset.
- `select(df, A:C)`: Select all variables from A to C from df dataset.
- `select(df, -C)`: Exclude C from the dataset from df dataset.	

Μπορείτε να χρησιμοποιήσετε τον τρίτο τρόπο για να εξαιρέσετε τη μεταβλητή Σχόλια.

step_1_df <- select(df, -Comments)
dim(df)

Παραγωγή:

## [1] 205  14
dim(step_1_df)

Παραγωγή:

## [1] 205  13

Το αρχικό σύνολο δεδομένων έχει 14 χαρακτηριστικά ενώ το step_1_df έχει 13.

Βοηθητικές συναρτήσεις select() στην R

Η ονομασία κάθε στήλης καθίσταται μη πρακτική όταν ένα σύνολο δεδομένων έχει δεκάδες μεταβλητές. Το dplyr συνοδεύεται από βοηθούς που επιλέγουν στήλες κατά μοτίβο ή κατά τύπο.

Βοηθός Επιλέγει στήλες που Παράδειγμα
ξεκινά_με() Ξεκινήστε με μια συμβολοσειρά select(df, starts_with(“Μέσος όρος”))
τελειώνει_με() Τερματίστε με μια συμβολοσειρά select(df, ends_with(“Ώρα”))
περιέχει() Περιέχει μια συμβολοσειρά οπουδήποτε select(df, περιέχει("Ταχύτητα"))
ταιριάζει () Αντιστοίχιση κανονικής έκφρασης επιλέξτε(df, ταιριάζει με("^Μέγιστο|^Μέσο όρο"))
όπου() Ολοκλήρωση δοκιμής τύπου επιλέξτε(df, όπου(είναι.αριθμητικό))
πάντα() Δεν έχουν ονομαστεί ακόμα select(df, Συνολικός Χρόνος, όλα())
# Keep only the timing columns
df %>% select(ends_with("Time"))

# Keep every numeric column
df %>% select(where(is.numeric))

# Move TotalTime to the front, keep the rest in place
df %>% select(TotalTime, everything())

Δύο ακόμη ρήματα συνδυάζονται φυσικά με την select(). Χρησιμοποιήστε το rename(new_name = old_name) για να αλλάξετε την ονομασία μιας στήλης χωρίς να την αποθέσετε.ping τα άλλα, και relocate() για να μετακινήσετε στήλες χωρίς να τις καταχωρίσετε όλες.

φίλτρο()

Το ρήμα filter() διατηρεί τις παρατηρήσεις που ικανοποιούν μια συνθήκη. Το filter() λειτουργεί ακριβώς όπως το select(), περνάτε πρώτα το πλαίσιο δεδομένων και στη συνέχεια μια συνθήκη που χωρίζεται με κόμμα:

filter(df, condition)
arguments:
- df: dataset used to filter the data
- condition:  Condition used to filter the data	

Ένα κριτήριο

Πρώτα απ 'όλα, μπορείτε να μετρήσετε τον αριθμό των παρατηρήσεων σε κάθε επίπεδο μιας μεταβλητής παράγοντα.

table(step_1_df$GoingTo)

Code εξήγηση

  • table(): Μετράει τον αριθμό των παρατηρήσεων ανά επίπεδο. Αναμένει μια μεταβλητή παράγοντα ή χαρακτήρα
  • table(step_1_df$GoingTo): Μετράει τον αριθμό των ταξιδιών προς κάθε προορισμό

Παραγωγή:

## 
##  GSK Home 
##  105  100	

Ο πίνακας συναρτήσεων() υποδεικνύει ότι 105 βόλτες πηγαίνουν στο GSK και 100 στο Home.

Μπορούμε να φιλτράρουμε τα δεδομένα για να επιστρέψουμε ένα σύνολο δεδομένων με 105 παρατηρήσεις και ένα άλλο με 100 παρατηρήσεις.

# Select observations where GoingTo == Home
select_home <- filter(df, GoingTo == "Home")
dim(select_home)

Παραγωγή:

## [1] 100  14
# Select observations where GoingTo == GSK (work)
select_work <- filter(df, GoingTo == "GSK")
dim(select_work)

Παραγωγή:

## [1] 105  14

Πολλαπλά κριτήρια

Μπορούμε να φιλτράρουμε ένα σύνολο δεδομένων με περισσότερα από ένα κριτήρια. Για παράδειγμα, μπορείτε π.χ.tracτις παρατηρήσεις όπου ο προορισμός είναι η έδρα και το ταξίδι πραγματοποιήθηκε Τετάρτη.

select_home_wed <- filter(df, GoingTo == "Home" & DayOfWeek == "Wednesday")
dim(select_home_wed)

Παραγωγή:

## [1] 23 14

23 παρατηρήσεις ταιριάζουν με αυτό το κριτήριο.

Συνθήκες και κοινά φίλτρα() Operators στο R

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

OperaTor Νόημα Παράδειγμα
== Ισο με φίλτρο(df, Μετάβαση σε == “Αρχική”)
!= Οχι ίσο με φίλτρο(df, ΗμέραΕβδομάδας!="Monday")
& ΚΑΙ, και τα δύο πρέπει να ισχύουν φίλτρο (df, Απόσταση > 50 & Μέγιστη ταχύτητα > 130)
| Ή, μπορεί να ισχύει οποιοδήποτε από τα δύο φίλτρο(df, ΗμέραΕβδομάδας == "Monday” | ΗμέραΕβδομάδας == “Παρασκευή”)
%σε% Αντιστοιχεί σε οποιαδήποτε τιμή σε ένα διάνυσμα φίλτρο(df, ΗμέραΕβδομάδας %in% c("Monday», «Παρασκευή»))
μεταξύ() Εμπίπτει σε ένα αριθμητικό εύρος φίλτρο(df, μεταξύ(Απόσταση, 48, 52))
is.na() Είναι μια τιμή που λείπει φίλτρο(df, is.na(Οικονομία Καυσίμου))

Τρεις συνήθειες αποτρέπουν τα περισσότερα σφάλματα filter().

  • Χρησιμοποιήστε %in% αντί για αλυσιδωτό OR. φίλτρο(df, ΗμέραΕβδομάδας %in% c("Monday», «Παρασκευή»)) είναι συντομότερο και πολύ πιο δύσκολο να πληκτρολογηθεί λάθος από δύο == συγκρίσεις που ενώνονται με μια κάθετη γραμμή.
  • Ποτέ μην ελέγχετε μια τιμή που λείπει με ==. Η έκφραση x == NA επιστρέφει NA, όχι TRUE, επομένως η γραμμή απορρίπτεται σιωπηλά. Χρησιμοποιήστε αντί αυτού is.na(x).
  • Τα κόμματα σημαίνουν ΚΑΙ. Η συνάρτηση filter(df, a, b) είναι πανομοιότυπη με την συνάρτηση filter(df, a & b), γι' αυτό και το παράδειγμα που αναφέρθηκε νωρίτερα σε αυτό το σεμινάριο λειτουργεί με οποιονδήποτε τρόπο.

Ο Σωλήνας Operator σε dplyr

Η δημιουργία ενός συνόλου δεδομένων απαιτεί πολλές λειτουργίες, όπως:

  • εισαγωγή
  • συγχώνευση
  • επιλογή
  • φιλτράρισμα
  • και ούτω καθεξής

Η βιβλιοθήκη dplyr συνοδεύεται από έναν πρακτικό τελεστή, %>%, που ονομάζεται the σωλήναςΚάνει τον χειρισμό δεδομένων πιο καθαρό, ταχύτερο και λιγότερο επιρρεπή σε σφάλματα.

Αυτός ο τελεστής είναι ένας κωδικός που εκτελεί βήματα χωρίς να αποθηκεύει ενδιάμεσα βήματα στον σκληρό δίσκο. Εάν επιστρέψετε στο παράδειγμά μας από παραπάνω, μπορείτε να επιλέξετε τις μεταβλητές που σας ενδιαφέρουν και να τις φιλτράρετε. Έχουμε τρία βήματα:

  • Βήμα 1: Εισαγωγή δεδομένων: Εισαγάγετε τα δεδομένα gps
  • Βήμα 2: Επιλογή δεδομένων: Επιλέξτε GoingTo και DayOfWeek
  • Βήμα 3: Φιλτράρισμα δεδομένων: Επιστροφή μόνο στο σπίτι και Τετάρτη

Μπορούμε να χρησιμοποιήσουμε τον δύσκολο τρόπο για να το κάνουμε:

# Step 1
step_1 <- read.csv(PATH)

# Step 2 
step_2 <- select(step_1, GoingTo, DayOfWeek)

# Step 3 
step_3 <- filter(step_2, GoingTo == "Home", DayOfWeek == "Wednesday")

head(step_3)

Παραγωγή:

##   GoingTo DayOfWeek
## 1    Home Wednesday
## 2    Home Wednesday
## 3    Home Wednesday
## 4    Home Wednesday
## 5    Home Wednesday
## 6    Home Wednesday	

Αυτός δεν είναι ένας βολικός τρόπος για να συνδέσετε πολλές λειτουργίες σε μια αλυσίδα. Κάθε ενδιάμεσο αποτέλεσμα παραμένει στο περιβάλλον και τα ονόματα παύουν γρήγορα να έχουν οποιαδήποτε σημασία.

Χρησιμοποιήστε τον τελεστή pipe %>% αντί αυτού. Ονομάζετε το πλαίσιο δεδομένων μία φορά στην αρχή και κάθε βήμα ρέει από αυτό.

Βασική σύνταξη του αγωγού

New_df <- df %>%
step 1 %>%
step 2 %>%
...
arguments
- New_df: Name of the new data frame 
- df: Data frame used to compute the step
- step: Instruction for each step
- Note: the last instruction does not need a trailing `%>%`, because nothing follows it
- Note: assigning the result to a new object is optional. Without it, the output prints in the console.

Μπορείτε να δημιουργήσετε τον πρώτο σας σωλήνα ακολουθώντας τα βήματα που απαριθμούνται παραπάνω.

# Create the data frame filter_home_wed.It will be the object return at the end of the pipeline
filter_home_wed <- 

#Step 1
read.csv(PATH) %>% 

#Step 2
select(GoingTo, DayOfWeek) %>% 

#Step 3
filter(GoingTo == "Home",DayOfWeek == "Wednesday")
identical(step_3, filter_home_wed)

Παραγωγή:

## [1] TRUE

Τα δύο αντικείμενα είναι πανομοιότυπα, επομένως ο αγωγός παρήγαγε ακριβώς το ίδιο αποτέλεσμα σε μία μόνο αναγνώσιμη πρόταση.

κανονίζω()

Στο προηγούμενο σεμινάριο, μαθαίνετε πώς να ταξινομείτε τις τιμές με τη συνάρτηση sort(). Η βιβλιοθήκη dplyr έχει τη λειτουργία ταξινόμησης. Λειτουργεί σαν γούρι με τον αγωγό. Το ρήμα arrange() μπορεί να αναδιατάξει μία ή πολλές σειρές, είτε αύξουσα (προεπιλογή) είτε φθίνουσα.

- `arrange(A)`: Ascending sort of variable A
- `arrange(A, B)`: Ascending sort of variable A and B
- `arrange(desc(A), B)`: Descending sort of variable A and ascending sort of B

Μπορούμε να ταξινομήσουμε την απόσταση ανά προορισμό.

# Sort by destination and distance
step_2_df <- step_1_df %>%
    arrange(GoingTo, Distance)
head(step_2_df)

Παραγωγή:

##     X       Date StartTime DayOfWeek GoingTo Distance MaxSpeed AvgSpeed
## 1 193  7/25/2011     08:06    Monday     GSK    48.32    121.2     63.4
## 2 196  7/21/2011     07:59  Thursday     GSK    48.35    129.3     81.5
## 3 198  7/20/2011     08:24 Wednesday     GSK    48.50    125.8     75.7
## 4 189  7/27/2011     08:15 Wednesday     GSK    48.82    124.5     70.4
## 5  95 10/11/2011     08:25   Tuesday     GSK    48.94    130.8     85.7
## 6 171  8/10/2011     08:13 Wednesday     GSK    48.98    124.8     72.8
##   AvgMovingSpeed FuelEconomy TotalTime MovingTime Take407All
## 1           78.4        8.45      45.7       37.0         No
## 2           89.0        8.28      35.6       32.6        Yes
## 3           87.3        7.89      38.5       33.3        Yes
## 4           77.8        8.45      41.6       37.6         No
## 5           93.2        7.81      34.3       31.5        Yes
## 6           78.8        8.54      40.4       37.3         No

dplyr Ρήματα στο R: Γρήγορη Αναφορά

Ο παρακάτω πίνακας παραθέτει κάθε ρήμα που χρησιμοποιείται σε αυτό το σεμινάριο, με τη σύνταξη και τι επιστρέφει κάθε κλήση:

Ρήμα Σκοπός Code εξήγηση
ματιά ελέγξτε τη δομή ενός df
glimpse(df)
Ίδιος σκοπός με το str(), πιο εύκολο στην ανάγνωση
επιλέγω() Επιλέξτε/εξαιρέστε τις μεταβλητές
select(df, A, B ,C)
Επιλέξτε τις μεταβλητές A, B και C
select(df, A:C)
Επιλέξτε όλες τις μεταβλητές από το A έως το C
select(df, -C)
Εξαιρέστε το C
φίλτρο() Διατηρήστε τις γραμμές που αντιστοιχούν σε μία ή περισσότερες συνθήκες
filter(df, condition1)
Μία προϋπόθεση
filter(df, condition1 & condition2)
Δύο συνθήκες σε συνδυασμό με ΚΑΙ
κανονίζω() Ταξινομήστε το σύνολο δεδομένων με μία ή πολλές μεταβλητές
arrange(A)
Αύξουσα μορφή μεταβλητής Α
arrange(A, B)
Αύξουσα μορφή μεταβλητών Α και Β
arrange(desc(A), B)
Φθίνουσα ταξινόμηση της μεταβλητής Α και αύξουσα ταξινόμηση της μεταβλητής Β
%>% Δημιουργήστε έναν αγωγό μεταξύ κάθε βήματος
step 1 %>% step 2 %>% step 3

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

Η διοχέτευση magrittr %>% συνοδεύεται από το dplyr και υποστηρίζει τη σύνταξη placeholder με τελεία. Η εγγενής διοχέτευση |> έφτασε στην R 4.1 και δεν χρειάζεται πακέτο. Και οι δύο μεταβιβάζουν το αριστερό αποτέλεσμα στο πρώτο όρισμα στα δεξιά.

Όχι. Κάθε ρήμα dplyr επιστρέφει ένα νέο πλαίσιο δεδομένων και αφήνει την είσοδο ανέπαφη. Πρέπει να αντιστοιχίσετε το αποτέλεσμα σε ένα αντικείμενο ή να το προωθήσετε περαιτέρω, για να διατηρηθεί η αλλαγή.

Μια σύγκριση με την NA επιστρέφει NA αντί για TRUE, και η filter() διατηρεί μόνο τις γραμμές που είναι TRUE. Χρησιμοποιήστε την is.na() για να επιλέξετε σκόπιμα τιμές που λείπουν ή την drop_na() από την tidyr για να τις αφαιρέσετε.

Η μηχανική χαρακτηριστικών για μοντέλα τεχνητής νοημοσύνης περιλαμβάνει κυρίως φιλτράρισμα γραμμών, επιλογή στηλών και ταξινόμηση. Το dplyr εκφράζει αυτά τα βήματα ως αναγνώσιμους αγωγούς που μπορούν να ελέγξουν οι κριτές, κάτι που έχει σημασία όταν ένα σύνολο δεδομένων εκπαίδευσης πρέπει να είναι αναπαραγώγιμο.

Ναι. Οι βοηθοί τεχνητής νοημοσύνης μπορούν να μεταφράσουν την υποομάδα bracket σε κλήσεις select() και filter() και να εξηγήσουν τον αγωγό. Να εκτελείτε πάντα και τις δύο εκδόσεις και να συγκρίνετε τις διαστάσεις, επειδή το βασικό R και το dplyr αντιμετωπίζουν τις ελλείπουσες τιμές διαφορετικά.

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