Menu
Coddy logo textTech

Creare DataFrame

Fa parte della sezione Logica e flusso del percorso R di Coddy. Lezione 42 di 64.

Un data frame è la tabella di R: ogni colonna è un vettore con il proprio tipo e tutte le colonne hanno la stessa lunghezza, con un valore per riga. data.frame() ne crea uno a partire da vettori con nome:

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
print(people)

Output:

  name age   city
1  ada  36 london
2   bo  22  paris
3   cy  41   rome

nrow() e ncol() restituiscono le dimensioni, mentre names() elenca le colonne. A differenza di una matrice, le colonne possono contenere tipi diversi: in questo caso testo e numeri.

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
print(nrow(people))
print(ncol(people))
print(names(people))

Output:

[1] 3
[1] 3
[1] "name" "age"  "city"

str() mostra il tipo e i primi valori di ogni colonna: è un modo rapido per controllare cosa contiene un data frame:

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
str(people)

Output:

'data.frame':	3 obs. of  3 variables:
 $ name: chr  "ada" "bo" "cy"
 $ age : num  36 22 41
 $ city: chr  "london" "paris" "rome"

I dati spesso arrivano come testo con una riga per linea. read.csv(text = lines) trasforma queste righe in un data frame, usando la prima riga come nomi delle colonne e convertendo automaticamente i numeri:

lines <- c("item,qty", "tea,2", "jam,5")
orders <- read.csv(text = lines)
print(orders)
print(sum(orders$qty))

Output:

  item qty
1  tea   2
2  jam   5
[1] 7
challenge icon

Sfida

Facile

Completa table_info(names, ages). Crea un data frame con le colonne name e age a partire dai due vettori. Restituisci tre righe: Rows: con il numero di righe, Columns: con i nomi delle colonne uniti da , e Oldest: con il nome nella riga con l’età più alta (la prima in caso di parità).

Il codice fornito legge i nomi e le età in due righe separate da virgole e stampa ogni riga restituita.

Provalo tu

table_info <- function(names, ages) {
  # Scrivi il tuo codice qui
  character(0)
}

# Codice di input/output fornito: lascialo così com'è
input <- suppressWarnings(readLines(file("stdin")))
cat(table_info(strsplit(input[1], ",")[[1]], as.numeric(strsplit(input[2], ",")[[1]])), sep = "\n")
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore R online