A: come utilizzare la funzione apply() su colonne specifiche
Spesso potresti voler utilizzare la funzione apply() per applicare una funzione a colonne specifiche in un frame di dati in R.
Tuttavia, la funzione apply() forza tutte le colonne in un frame di dati ad avere lo stesso tipo di oggetto prima di applicare una funzione, il che a volte può avere conseguenze indesiderate.
Una scelta migliore è la funzione lapply() , che utilizza la seguente sintassi di base:
df[c(' col1 ', ' col2 ')] <- lapply(df[c(' col1 ', ' col2 ')], my_function)
Questo particolare esempio applica la funzione my_function solo a col1 e col2 nel frame di dati.
L’esempio seguente mostra come utilizzare questa sintassi nella pratica.
Esempio: applicare una funzione a colonne specifiche nel frame di dati
Supponiamo di avere il seguente frame di dati in R:
#create data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'), points=c(19, 22, 15, NA, 14, 25, 25, 25), rebounds=c(10, 6, 3, 7, 11, 13, 9, 12), assists=c(4, 4, 3, 6, 7, 5, 10, 8)) #view data frame df team points rebound assists 1 A 19 10 4 2 A 22 6 4 3 to 15 3 3 4 A NA 7 6 5 B 14 11 7 6 B 25 13 5 7 B 25 9 10 8 B 25 12 8
Supponiamo ora di definire la seguente funzione che moltiplica i valori per 2 e poi aggiunge 1:
#define function
my_function <- function (x) x*2 + 1
Possiamo utilizzare la seguente funzione lapply() per applicare questa funzione solo alle colonne di punti e rimbalzi nel frame di dati:
#apply function to specific columns
df[c(' points ', ' rebounds ')] <- lapply(df[c(' points ', ' rebounds ')], my_function)
#view updated data frame
df
team points rebound assists
1 A 39 21 4
2 A 45 13 4
3 A 31 7 3
4 A NA 15 6
5 B 29 23 7
6 B 51 27 5
7 B 51 19 10
8 B 51 25 8
Dal risultato, possiamo vedere che moltiplichiamo ogni valore nelle colonne dei punti e dei rimbalzi per 2 e poi aggiungiamo 1.
Si noti inoltre che le colonne relative alle squadre e agli assist sono rimaste invariate.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in R:
Una guida per apply(), lapply(), sapply() e tapply() in R
Come utilizzare la funzione di trasformazione in R