web-dev-qa-db-fra.com

Moyenne d'une colonne dans un cadre de données, en fonction du nom de la colonne

Je suis dans une grande fonction que je dois écrire. Dans la dernière partie, je dois calculer la moyenne d'une colonne dans un bloc de données. Le nom de la colonne sur laquelle je travaille est donné en argument à la fonction.

11
FranGoitia

Je pense que vous demandez comment calculer la moyenne d'une variable dans un bloc de données, à partir du nom de la colonne. Il existe deux approches typiques pour cela: l’indexation avec [[ et l’autre avec [:

data(iris)
mean(iris[["Petal.Length"]])
# [1] 3.758
mean(iris[,"Petal.Length"])
# [1] 3.758
mean(iris[["Sepal.Width"]])
# [1] 3.057333
mean(iris[,"Sepal.Width"])
# [1] 3.057333
23
josliber

Tout ce qui suit devrait marcher !!

df <- data.frame(x=1:3,y=4:6)

mean(df$x)
mean(df[,1])
mean(df[["x"]])
9
Shambho

si votre colonne contient une valeur que vous souhaitez négliger. cela vous aidera

## da is data frame & Ozone is column name 

##for single column
mean(da$Ozone, na.rm = TRUE)  

##for all columns
colMeans(x=da, na.rm = TRUE)
7
reza.cse08

Je pense que ce que l'on vous demande de faire (ou peut-être de vous demander vous-même?) Est de prendre une valeur de caractère qui correspond au nom d'une colonne dans un cadre de données particulier (éventuellement aussi donné en tant que caractère). Il y a deux astuces ici. La plupart des gens apprennent à extraire des colonnes avec l'opérateur "$" et cela ne fonctionnera pas à l'intérieur d'une fonction si celle-ci est transmise à un personnage vecor. Si la fonction est également supposée accepter l'argument de caractère, vous devez également utiliser la fonction get:

 df1 <- data.frame(a=1:10, b=11:20)
 mean_col <- function( dfrm, col ) mean( get(dfrm)[[ col ]] )
 mean_col("df1", "b")
 # [1] 15.5

Il existe une sorte de frontière sémantique entre les objets ordinaires tels que les vecteurs de caractères et les objets de langage tels que les noms d'objets. La fonction get est l’une des fonctions permettant de "promouvoir" les valeurs de caractère en vue de l’évaluation du niveau de langue. Et la fonction "$" n'évaluera pas son argument dans une fonction, vous devez donc utiliser "[[". "$" seulement est utile au niveau de la console et doit être complètement évité dans les fonctions.

2
42-

Utilisez summarise dans le package dplyr:

library(dplyr)
summarise(df, Average = mean(col_name, na.rm = T))

remarque: dplyr prend en charge summarise et summarize.

1

Supposons que vous ayez un cadre de données (disons df) avec les colonnes "x" et "y", vous pouvez trouver la moyenne de la colonne (x ou y) en utilisant:

1 . Utilisation de mean () function

z<-mean(df$x)

2 . Utilisation du nom de colonne (disons x) comme variable à l'aide de la fonction attach()

 attach(df)
 mean(x)

Une fois terminé, vous pouvez appeler detach() pour supprimer "x"

detach()

3 . À l'aide de la fonction with(), il vous permet d'utiliser des colonnes de trame de données en tant que variables distinctes.

 z<-with(df,mean(x))
1
Prateek Joshi