web-dev-qa-db-ja.com

列の名前を指定した、データフレーム内の列の平均

私は書く必要がある大きな機能の中にいます。最後の部分では、データフレームの列の平均を計算する必要があります。私が操作している列の名前は、関数の引数として指定されています。

12
FranGoitia

列の名前を指定して、データフレーム内の変数の平均を計算する方法を求めていると思います。これを行うための2つの典型的なアプローチがあります。1つは[[でインデックス付けし、もう1つは[でインデックス付けします:

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
28
josliber

次のいずれかが機能するはずです!!

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

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

列に無視する値が含まれている場合。それはあなたを助けます

## 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)
8
reza.cse08

私はあなたがするように求められている(またはおそらく自問している)ことは、特定のデータフレーム内の列の名前と一致する文字値を取る(おそらく文字として与えられる)と思います。ここには2つのトリックがあります。ほとんどの人は、「$」演算子を使用して列を抽出することを学びますが、関数に文字ベクトルが渡された場合、関数内では機能しません。関数が文字引数を受け入れることも想定されている場合、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

文字ベクトルのような通常のオブジェクトと、オブジェクトの名前のような言語オブジェクトとの間には、一種の意味的な境界があります。 get関数は、言語レベルの評価に文字値を「昇格」できる関数の1つです。また、「$」関数は関数内の引数を評価しないため、「[[」を使用する必要があります。 「$」はコンソールレベルでのみ有用であり、関数では完全に回避する必要があります。

3
42-

summariseパッケージでdplyrを使用します。

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

注:dplyrは、summarisesummarizeの両方をサポートします。

2

列 "x"および "y"のデータフレーム(たとえばdf)があると仮定すると、次を使用して列の平均(xまたはy)を見つけることができます。

1。Using mean() function

_z<-mean(df$x)
_

2変数として列名(xなど)を使用 using attach() function

_ attach(df)
 mean(x)
_

完了したら、detach()を呼び出して「x」を削除できます

_detach()
_

.with()関数を使用すると、データフレームの列を個別の変数として使用できます。

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