Come calcolare la media di più colonne in r


Spesso potresti voler calcolare la media di più colonne in R. Fortunatamente, puoi farlo facilmente utilizzando la funzione colMeans() .

 colMeans(df)

I seguenti esempi mostrano come utilizzare questa funzione nella pratica.

Utilizzando colMeans() per trovare la media di più colonne

Il codice seguente mostra come utilizzare la funzione colMeans() per trovare la media di ciascuna colonna in un frame di dati:

 #create data frame
df <- data.frame(var1=c(1, 3, 3, 4, 5),
                 var2=c(7, 7, 8, 3, 2),
                 var3=c(3, 3, 6, 6, 8),
                 var4=c(1, 1, 2, 8, 9))

#find mean of each column
colMeans(df)

var1 var2 var3 var4 
 3.2 5.4 5.2 4.2 

Possiamo anche specificare per quali colonne trovare la media:

 #find the mean of columns 2 and 3
colMeans(df[, c(2, 3)])

var2 var3 
 5.4 5.2 

#find the mean of the first three columns
colMeans(df[, 1:3])

var1 var2 var3 
 3.2 5.4 5.2

Se sono presenti colonne non numeriche, puoi utilizzare sapply() per specificare che desideri trovare solo la media delle colonne numeriche:

 #create data frame
df <- data.frame(var1=c(1, 3, 3, 4, 5),
                 var2=c(7, 7, 8, 3, 2),
                 var3=c(3, 3, 6, 6, 8),
                 var4=c(1, 1, 2, 8, 9),
                 var5=c('a', 'a', 'b', 'b', 'c'))

#find mean of only numeric columns
colMeans(df[ sapply (df, is.numeric)])

var1 var2 var3 var4 
 3.2 5.4 5.2 4.2

E se ci sono valori mancanti in qualche colonna, puoi utilizzare l’argomento na.rm=TRUE per ignorare i valori mancanti durante il calcolo delle medie:

 #create data frame with some missing values
df <- data.frame(var1=c(1, 3, NA, NA, 5),
                 var2=c(7, 7, 8, 3, 2),
                 var3=c(3, 3, 6, 6, 8),
                 var4=c(1, 1, 2, 8, NA))

#find mean of each column and ignore missing values
colMeans(df, na.rm= TRUE )

var1 var2 var3 var4 
 3.0 5.4 5.2 3.0

Risorse addizionali

Come scorrere i nomi delle colonne in R
Come sommare colonne specifiche in R

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *