Gemiddelde van een kolom in een gegevensframe, gegeven de naam van de kolom

Ik zit in een grote functie die ik moet schrijven. In het laatste deel moet ik het gemiddelde van een kolom in een dataframe berekenen. De naam van de kolom waar ik mee bezig ben, wordt gegeven als argument voor de functie.


Antwoord 1, autoriteit 100%

Ik denk dat je vraagt hoe je het gemiddelde van een variabele in een dataframe kunt berekenen, gezien de naam van de kolom. Er zijn twee typische benaderingen om dit te doen, de ene indexering met [[] en de andere indexering met [:

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

Antwoord 2, autoriteit 40%

Elk van het volgende zou moeten werken!!

df <- data.frame(x=1:3,y=4:6)
mean(df$x)
mean(df[,1])
mean(df[["x"]])

Antwoord 3, autoriteit 36%

als uw kolom een waarde bevat die u wilt negeren. het zal je helpen

## 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)

Antwoord 4, autoriteit 7%

Ik denk dat wat u wordt gevraagd te doen (of u zich misschien afvraagt?) een tekenwaarde is die overeenkomt met de naam van een kolom in een bepaald dataframe (mogelijk ook gegeven als een teken). Er zijn hier twee trucs. De meeste mensen leren kolommen extraheren met de “$”-operator en dat werkt niet binnen een functie als de functie een tekenvecor wordt doorgegeven. Als de functie ook tekenargumenten moet accepteren, moet je ook de functie getgebruiken:

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

Er is een soort semantische grens tussen gewone objecten zoals karaktervectoren en taalobjecten zoals de namen van objecten. De functie getis een van de functies waarmee u tekenwaarden kunt “promoten” naar evaluatie op taalniveau. En de functie “$” evalueert zijn argument NIET in een functie, dus je moet “[[” gebruiken. “$” is alleen nuttig op consoleniveau en moet volledig worden vermeden in functies.


Antwoord 5, autoriteit 7%

Gebruik summarisein het dplyrpakket:

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

opmerking: dplyrondersteunt zowel summariseals summarize.


Antwoord 6, autoriteit 5%

Stel dat je een dataframe hebt (zeg df) met kolommen “x” en “y”, dan kun je het gemiddelde van kolom (x of y) vinden met:

1.De functie mean()gebruiken

z<-mean(df$x)

2.De kolomnaam (say x) gebruiken als een variabelemet de functie attach()

attach(df)
 mean(x)

Als je klaar bent, kun je detach()aanroepen om “x” te verwijderen

detach()

3. Met de functie with()kunt u kolommen van dataframes als afzonderlijke variabelen gebruiken.

z<-with(df,mean(x))

Other episodes