Colonne e righe
Fa parte della sezione Logica e flusso del percorso R di Coddy. Lezione 43 di 64.
df$col e df[["col"]] restituiscono una colonna come vettore semplice, quindi su di essa funzionano tutte le funzioni per vettori. [[ ]] accetta il nome di una colonna memorizzato in una variabile:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people$age)
print(mean(people$age))
col <- "city"
print(people[[col]])Output:
[1] 36 22 41
[1] 33
[1] "london" "paris" "rome" Le parentesi quadre accettano [row, column], come una matrice. Un lato vuoto seleziona tutto, e le colonne possono essere scelte per nome:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people[2, ])
print(people[, c("name", "city")])Output:
name age city
2 bo 22 paris
name city
1 ada london
2 bo paris
3 cy romeUna cella è df[row, column] e assegnarle un valore lo modifica. Assegnare un valore a un'intera colonna funziona allo stesso modo:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people[3, "age"])
people[3, "age"] <- 42
people$city <- toupper(people$city)
print(people)Output:
[1] 41
name age city
1 ada 36 LONDON
2 bo 22 PARIS
3 cy 42 ROMEPer scorrere le righe una alla volta, esegui un ciclo su seq_len(nrow(df)) e leggi ogni cella con df[i, "col"] oppure df$col[i]:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
for (i in seq_len(nrow(people))) {
cat(people$name[i], "lives in", people[i, "city"], "\n")
}Output:
ada lives in london
bo lives in paris
cy lives in rome Sfida
FacileCompleta person_card(df, i). Restituisci una riga per ogni colonna della riga i, name: bo, con il nome della colonna e il valore in quella riga, nell'ordine delle colonne.
Il codice fornito legge la tabella dall'input con read.csv(text = input): la prima riga contiene i nomi delle colonne e ogni riga successiva rappresenta una riga, con i valori separati da virgole. L'ultima riga dell'input contiene i e il codice stampa ogni riga restituita.
Provalo tu
person_card <- function(df, i) {
# Scrivi qui il tuo codice
character(0)
}
# Codice di input/output fornito: lascialo così com'è
input <- suppressWarnings(readLines(file("stdin")))
df <- read.csv(text = input[-length(input)])
i <- as.numeric(input[length(input)])
cat(person_card(df, i), sep = "\n")
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Sottostringhe con substr()Formattazione con sprintf()Dividere e unireRicerca nelle stringheSostituzione del testoRipasso - Generatore di nomi utente4Matrici
Creazione di matriciIndicizzazione delle matriciRiepiloghi di righe e colonneOperazioni aritmetiche con le matriciRipasso - Schema dei posti a sedere10Flusso di controllo avanzato
La funzione switch()ifelse() vettorialerepeat e breakFunzioni ricorsiveRiepilogo - Classificatore di voti2Ricerche chiave-valore
Ricerche in vettori con nomiControllare le chiaviAggiungere e rimuovere chiaviIterare sui nomiRiepilogo - Sportello titoli5Progetto - Registro dei voti
Aggiungere studentiRegistrare i voti8Ordinamento e raggruppamento
Ordinare i vettoriOrdinare in base a una chiaveRaggruppare con split()Riepiloghi dei gruppiRipasso - Classifica3Insiemi e conteggio
Valori univociOperazioni sugli insiemiTest di appartenenzaConteggio con table()Riepilogo - Ospiti dell’evento6Le funzioni come valori
Funzioni anonimePassare funzioniRestituire funzioniClosure con statoRiepilogo - Regole di sconto9DataFrame
Creare DataFrameColonne e righeFiltrare le righeAggiungere e ordinareRiepilogo - Report delle vendite12Progetto - Gestione delle spese
Registrare le speseSpesa totaleEsercitati da solo: Compilatore R online