Corso
- Creare sottoinsiemi di righe e colonne per indice
- Creare sottoinsiemi di righe e colonne per nome
- Creare sottoinsiemi di righe e colonne per valore
- Esercizi di pratica
Che tu stia confrontando come diversi gruppi demografici rispondono alle campagne di marketing, concentrandoti su un intervallo temporale specifico o estraendo informazioni su pochi prodotti selezionati dall'inventario, creare sottoinsiemi ti permette di ottenere osservazioni utili dal tuo dataset. R è un ottimo strumento che rende il subsetting dei dati facile e intuitivo. Alla fine di questo tutorial saprai estrarre dal dataset esattamente le informazioni che ti interessano.
Creare un sottoinsieme non modifica il contenuto dei dati, ma seleziona semplicemente la porzione più rilevante per l'obiettivo che hai in mente. In generale, ci sono tre modi per creare sottoinsiemi di righe e colonne di un dataset—per indice, per nome e per valore.
Creare sottoinsiemi di righe e colonne per indice
Un modo per creare sottoinsiemi di righe e colonne è usare gli indici del dataset. È come descrivere le righe e le colonne come "la prima riga", "tutte le righe nelle colonne seconda e quinta" o "la prima riga nelle colonne dalla seconda alla quinta". Specifichiamo queste frasi usando un dataset chiamato iris in R. Dalla sua documentazione, "[q]uesto famoso dataset dell'iris (di Fisher o Anderson) fornisce le misure in centimetri delle variabili lunghezza e larghezza del sepalo e lunghezza e larghezza del petalo, rispettivamente, per 50 fiori di ciascuna delle 3 specie di iris. Le specie sono Iris setosa, versicolor e virginica."
# "La prima riga":
iris[1, ]
# "Tutte le righe nelle colonne seconda e quinta":
iris[, c(2, 5)]
# "La prima riga nelle colonne dalla seconda alla quinta":
iris[1, 2:5]
Per creare un sottoinsieme dei dati si usano le parentesi quadre dopo l'oggetto dataset. Le righe del dataset si specificano come primo elemento dentro le parentesi quadre e le colonne come secondo elemento, separati da una virgola:
data[rows, columns]
Creare sottoinsiemi di righe e colonne per nome
In R, le righe e le colonne del dataset hanno attributi di nome. I nomi delle righe sono usati raramente e per impostazione predefinita forniscono indici—interi numerati da 1 al numero di righe del dataset—proprio come hai visto nella sezione precedente. Infatti, se chiamassi rownames() sul dataset iris, vedresti che sono indicizzate semplicemente da 1 a 150:
> rownames(iris)
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14"
[15] "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28"
[29] "29" "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42"
[43] "43" "44" "45" "46" "47" "48" "49" "50" "51" "52" "53" "54" "55" "56"
[57] "57" "58" "59" "60" "61" "62" "63" "64" "65" "66" "67" "68" "69" "70"
[71] "71" "72" "73" "74" "75" "76" "77" "78" "79" "80" "81" "82" "83" "84"
[85] "85" "86" "87" "88" "89" "90" "91" "92" "93" "94" "95" "96" "97" "98"
[99] "99" "100" "101" "102" "103" "104" "105" "106" "107" "108" "109" "110" "111" "112"
[113] "113" "114" "115" "116" "117" "118" "119" "120" "121" "122" "123" "124" "125" "126"
[127] "127" "128" "129" "130" "131" "132" "133" "134" "135" "136" "137" "138" "139" "140"
[141] "141" "142" "143" "144" "145" "146" "147" "148" "149" "150"
> nrow(iris)
[1] 150
I nomi delle righe sono più comuni in dataset piccoli e servono a rendere facilmente identificabili le osservazioni. Per esempio, per un piccolo dataset con le informazioni sanitarie dei pazienti di un medico, i nomi delle righe potrebbero essere i nomi completi dei pazienti.
I nomi delle colonne, invece, sono presenti in quasi tutti i dataset. Puoi accedervi con la funzione colnames() o con la funzione names():
colnames(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
names(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
Per creare sottoinsiemi del dataset usando i nomi di righe e colonne, usa semplicemente di nuovo le parentesi quadre, precedute dall'oggetto dataset:
# Larghezza del sepalo della quinta osservazione
iris["5", "Sepal.Width"]
# Larghezza del sepalo e larghezza del petalo
iris[, c("Sepal.Width", "Petal.Width")]
È importante notare che sia i nomi delle righe che quelli delle colonne sono di tipo character, quindi usare gli apici singoli o doppi è assolutamente necessario!
Creare sottoinsiemi di righe e colonne per valore
Creare sottoinsiemi per valore offre spesso la massima flessibilità. Per esempio, puoi estrarre i dati su Iris setosa usando un'istruzione condizionale come questa:
> iris[iris$Species == "setosa", ]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
...
47 5.1 3.8 1.6 0.2 setosa
48 4.6 3.2 1.4 0.2 setosa
49 5.3 3.7 1.5 0.2 setosa
50 5.0 3.3 1.4 0.2 setosa
I condizionali come iris$Species == "setosa" vanno nell'elemento delle righe tra parentesi quadre (cioè il primo elemento prima della virgola). Oltre all'istruzione condizionale nel primo elemento, puoi specificare le colonne per indice o per nome nel secondo elemento. Nella console qui sotto, prova a selezionare solo le misure dei sepali di Iris setosa:
# Stampa le misure dei sepali per setosa
# Stampa le misure dei sepali per setosa (per nome)
iris[iris$Species == "setosa", c("Sepal.Length", "Sepal.Width")]
# Stampa le misure dei sepali per setosa (per indice)
iris[iris$Species == "setosa", 1:2]
test_or(
test_output_contains('iris[iris$Species == "setosa", c("Sepal.Length", "Sepal.Width")]',
incorrect_msg = "Select just the Sepal.Length and Sepal.Width columns for the setosa iris either by name or index."), test_output_contains('iris[iris$Species == "setosa", c("Sepal.Width", "Sepal.Length")]', incorrect_msg = "Select just the Sepal.Length and Sepal.Width columns for the setosa iris either by name or index.")) success_msg("Great work!") Riepilogo
In questo tutorial hai:
- Imparato a creare sottoinsiemi del data frame per indice. Righe e colonne sono indicizzate come interi da 1 al numero di righe e di colonne, rispettivamente.
- Imparato a creare sottoinsiemi del data frame per nome. Hai visto che i nomi delle righe sono raramente specificati e che i nomi delle colonne sono di tipo character.
- Imparato a usare istruzioni condizionali nell'elemento delle righe tra parentesi quadre per creare sottoinsiemi del data frame per valore.
- Imparato a combinare questi metodi per consentire un subsetting più flessibile (ad esempio, usando condizionali per le righe e creando sottoinsiemi per indice o per nome per le colonne).
Qui sotto trovi alcuni esercizi per consolidare quanto hai imparato. La pratica rende perfetti: prova a svolgerli!
Esercizi di pratica
Seleziona tutte le osservazioni per cui la larghezza del sepalo è maggiore della lunghezza del petalo.
# Quali osservazioni hanno la larghezza del sepalo maggiore della lunghezza del petalo?
# Quali osservazioni hanno la larghezza del sepalo maggiore della lunghezza del petalo?
iris[iris$Sepal.Width > iris$Petal.Length, ]
test_output_contains('iris[iris$Sepal.Width > iris$Petal.Length, ]',
incorrect_msg = paste("Select the observations for which Sepal.Width values", "are larger than Petal.Length values.")) success_msg("Nice! Turns out only Iris setosa have this shape.")
iris$Sepal.Width > iris$Petal.Length dentro le parentesi quadre. Non dimenticare la virgola!Seleziona tutte le Iris versicolor la cui larghezza del sepalo è maggiore della larghezza media del sepalo tra tutte le specie.
# Salva i dati di versicolor in un oggetto chiamato versicolor
# Seleziona tutte le Iris versicolor con larghezza del sepalo superiore alla media
# Salva i dati di versicolor in un oggetto chiamato versicolor
versicolor <- iris[iris$Species == "versicolor", ]
# Seleziona tutte le Iris versicolor con larghezza del sepalo superiore alla media
versicolor[versicolor$Sepal.Width > mean(iris$Sepal.Width), ]
test_object('versicolor',
undefined_msg = "Did you define the versicolor object?", incorrect_msg = paste("Select where Species is equal to \"versicolor\".", "Remember to use the == operator!")) test_output_contains('versicolor[versicolor$Sepal.Width > mean(iris$Sepal.Width), ]', incorrect_msg = paste("Not quite! Are you using the mean() function", "to find the average sepal width across all species", "and not just for Iris versicolor?")) success_msg("Great work!")
mean() per trovare la larghezza media del sepalo in iris, poi usa un'istruzione condizionale con prefisso versicolor per selezionare solo quelle con valori superiori alla media.Riporta la larghezza media del sepalo per tutte le Iris virginica che hanno lunghezze dei petali inferiori a 5 centimetri.
# Sei libero di affrontare questo problema come preferisci!
# Salva i dati di virginica in un oggetto chiamato virginica
virginica <- iris[iris$Species == "virginica", ]
# Larghezza media del sepalo per Iris virginica con lunghezze dei petali inferiori a 5
mean(virginica[virginica$Petal.Length < 5, ]$Sepal.Width)
test_output_contains('2.8',
incorrect_msg = "Incorrect! This is a tough one!")
success_msg("Excellent!")
Petal.Length è inferiore a 5. Puoi trovare la media chiamando la funzione mean().Vuoi saperne di più su altri modi per estrarre insight dai tuoi dati? Dai un'occhiata a questi corsi su DataCamp!
Dai un'occhiata anche al nostro tutorial Unire dataset in R.
Che tu stia confrontando come diversi gruppi demografici rispondono alle campagne di marketing, concentrandoti su un intervallo temporale specifico o estraendo informazioni su pochi prodotti selezionati dall'inventario, creare sottoinsiemi ti permette di ottenere osservazioni utili dal tuo dataset. R è un ottimo strumento che rende il subsetting dei dati facile e intuitivo. Alla fine di questo tutorial saprai estrarre dal dataset esattamente le informazioni che ti interessano.
Creare un sottoinsieme non modifica il contenuto dei dati, ma seleziona semplicemente la porzione più rilevante per l'obiettivo che hai in mente. In generale, ci sono tre modi per creare sottoinsiemi di righe e colonne di un dataset: per indice, per nome e per valore.
Creare sottoinsiemi di righe e colonne per indice
Un modo per creare sottoinsiemi di righe e colonne è usare gli indici del dataset. È come descrivere le righe e le colonne come "la prima riga", "tutte le righe nelle colonne seconda e quinta" o "la prima riga nelle colonne dalla seconda alla quinta". Specifichiamo queste frasi usando un dataset chiamato iris in R. Dalla sua documentazione, "[q]uesto famoso dataset dell'iris (di Fisher o Anderson) fornisce le misure in centimetri delle variabili lunghezza e larghezza del sepalo e lunghezza e larghezza del petalo, rispettivamente, per 50 fiori di ciascuna delle 3 specie di iris. Le specie sono Iris setosa, versicolor e virginica."
# "La prima riga":
iris[1, ]
# "Tutte le righe nelle colonne seconda e quinta":
iris[, c(2, 5)]
# "La prima riga nelle colonne dalla seconda alla quinta":
iris[1, 2:5]
Per creare un sottoinsieme dei dati si usano le parentesi quadre dopo l'oggetto dataset. Le righe del dataset si specificano come primo elemento dentro le parentesi quadre e le colonne come secondo elemento, separati da una virgola:
data[rows, columns]
Creare sottoinsiemi di righe e colonne per nome
In R, le righe e le colonne del dataset hanno attributi di nome. I nomi delle righe sono usati raramente e per impostazione predefinita forniscono indici—interi numerati da 1 al numero di righe del dataset—proprio come hai visto nella sezione precedente. Infatti, se chiamassi rownames() sul dataset iris, vedresti che sono indicizzate semplicemente da 1 a 150:
> rownames(iris)
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14"
[15] "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28"
[29] "29" "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42"
[43] "43" "44" "45" "46" "47" "48" "49" "50" "51" "52" "53" "54" "55" "56"
[57] "57" "58" "59" "60" "61" "62" "63" "64" "65" "66" "67" "68" "69" "70"
[71] "71" "72" "73" "74" "75" "76" "77" "78" "79" "80" "81" "82" "83" "84"
[85] "85" "86" "87" "88" "89" "90" "91" "92" "93" "94" "95" "96" "97" "98"
[99] "99" "100" "101" "102" "103" "104" "105" "106" "107" "108" "109" "110" "111" "112"
[113] "113" "114" "115" "116" "117" "118" "119" "120" "121" "122" "123" "124" "125" "126"
[127] "127" "128" "129" "130" "131" "132" "133" "134" "135" "136" "137" "138" "139" "140"
[141] "141" "142" "143" "144" "145" "146" "147" "148" "149" "150"
> nrow(iris)
[1] 150
I nomi delle righe sono più comuni in dataset piccoli e servono a rendere facilmente identificabili le osservazioni. Per esempio, per un piccolo dataset con le informazioni sanitarie dei pazienti di un medico, i nomi delle righe potrebbero essere i nomi completi dei pazienti.
I nomi delle colonne, invece, sono presenti in quasi tutti i dataset. Puoi accedervi con la funzione colnames() o con la funzione names():
colnames(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
names(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
Per creare sottoinsiemi del dataset usando i nomi di righe e colonne, usa semplicemente di nuovo le parentesi quadre, precedute dall'oggetto dataset:
# Larghezza del sepalo della quinta osservazione
iris["5", "Sepal.Width"]
# Larghezza del sepalo e larghezza del petalo
iris[, c("Sepal.Width", "Petal.Width")]
È importante notare che sia i nomi delle righe che quelli delle colonne sono di tipo character, quindi usare gli apici singoli o doppi è assolutamente necessario!
Creare sottoinsiemi di righe e colonne per valore
Creare sottoinsiemi per valore offre spesso la massima flessibilità. Per esempio, puoi estrarre i dati su Iris setosa usando un'istruzione condizionale come questa:
> iris[iris$Species == "setosa", ]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
...
47 5.1 3.8 1.6 0.2 setosa
48 4.6 3.2 1.4 0.2 setosa
49 5.3 3.7 1.5 0.2 setosa
50 5.0 3.3 1.4 0.2 setosa
I condizionali come iris$Species == "setosa" vanno nell'elemento delle righe tra parentesi quadre (cioè il primo elemento prima della virgola). Oltre all'istruzione condizionale nel primo elemento, puoi specificare le colonne per indice o per nome nel secondo elemento. Nella console qui sotto, prova a selezionare solo le misure dei sepali di Iris setosa:
# Stampa le misure dei sepali per setosa
# Stampa le misure dei sepali per setosa (per nome)
iris[iris$Species == "setosa", c("Sepal.Length", "Sepal.Width")]
# Stampa le misure dei sepali per setosa (per indice)
iris[iris$Species == "setosa", 1:2]
test_or(
test_output_contains('iris[iris$Species == "setosa", c("Sepal.Length", "Sepal.Width")]',
incorrect_msg = "Select just the Sepal.Length and Sepal.Width columns for the setosa iris either by name or index."), test_output_contains('iris[iris$Species == "setosa", c("Sepal.Width", "Sepal.Length")]', incorrect_msg = "Select just the Sepal.Length and Sepal.Width columns for the setosa iris either by name or index.")) success_msg("Great work!") Riepilogo
In questo tutorial hai:
- Imparato a creare sottoinsiemi del data frame per indice. Righe e colonne sono indicizzate come interi da 1 al numero di righe e di colonne, rispettivamente.
- Imparato a creare sottoinsiemi del data frame per nome. Hai visto che i nomi delle righe sono raramente specificati e che i nomi delle colonne sono di tipo character.
- Imparato a usare istruzioni condizionali nell'elemento delle righe tra parentesi quadre per creare sottoinsiemi del data frame per valore.
- Imparato a combinare questi metodi per consentire un subsetting più flessibile (ad esempio, usando condizionali per le righe e creando sottoinsiemi per indice o per nome per le colonne).
Qui sotto trovi alcuni esercizi per consolidare quanto hai imparato. La pratica rende perfetti: prova a svolgerli!
Esercizi di pratica
Seleziona tutte le osservazioni per cui la larghezza del sepalo è maggiore della lunghezza del petalo.
# Quali osservazioni hanno la larghezza del sepalo maggiore della lunghezza del petalo?
# Quali osservazioni hanno la larghezza del sepalo maggiore della lunghezza del petalo?
iris[iris$Sepal.Width > iris$Petal.Length, ]
test_output_contains('iris[iris$Sepal.Width > iris$Petal.Length, ]',
incorrect_msg = paste("Select the observations for which Sepal.Width values", "are larger than Petal.Length values.")) success_msg("Nice! Turns out only Iris setosa have this shape.")
iris$Sepal.Width > iris$Petal.Length dentro le parentesi quadre. Non dimenticare la virgola!Seleziona tutte le Iris versicolor la cui larghezza del sepalo è maggiore della larghezza media del sepalo tra tutte le specie.
# Salva i dati di versicolor in un oggetto chiamato versicolor
# Seleziona tutte le Iris versicolor con larghezza del sepalo superiore alla media
# Salva i dati di versicolor in un oggetto chiamato versicolor
versicolor <- iris[iris$Species == "versicolor", ]
# Seleziona tutte le Iris versicolor con larghezza del sepalo superiore alla media
versicolor[versicolor$Sepal.Width > mean(iris$Sepal.Width), ]
test_object('versicolor',
undefined_msg = "Did you define the versicolor object?", incorrect_msg = paste("Select where Species is equal to \"versicolor\".", "Remember to use the == operator!")) test_output_contains('versicolor[versicolor$Sepal.Width > mean(iris$Sepal.Width), ]', incorrect_msg = paste("Not quite! Are you using the mean() function", "to find the average sepal width across all species", "and not just for Iris versicolor?")) success_msg("Great work!")
mean() per trovare la larghezza media del sepalo in iris, poi usa un'istruzione condizionale con prefisso versicolor per selezionare solo quelle con valori superiori alla media.Riporta la larghezza media del sepalo per tutte le Iris virginica che hanno lunghezze dei petali inferiori a 5 centimetri.
# Sei libero di affrontare questo problema come preferisci!
# Salva i dati di virginica in un oggetto chiamato virginica
virginica <- iris[iris$Species == "virginica", ]
# Larghezza media del sepalo per Iris virginica con lunghezze dei petali inferiori a 5
mean(virginica[virginica$Petal.Length < 5, ]$Sepal.Width)
test_output_contains('2.8',
incorrect_msg = "Incorrect! This is a tough one!")
success_msg("Excellent!")
Petal.Length è inferiore a 5. Puoi trovare la media chiamando la funzione mean().Vuoi saperne di più su altri modi per estrarre insight dai tuoi dati? Dai un'occhiata a questi corsi su DataCamp!
Dai un'occhiata anche al nostro tutorial Unire dataset in R.

