也許這很簡單,但我無法在網上找到答案。我的平均值是按等級計算的。 我的數據看起來typicaly:意思是因子水平
factor, value
a,1
a,2
b,1
b,1
b,1
c,1
我想向量A中包含的意思是隻爲「A」級 如果我在康壽我想1.5 這種方法用於計算平均值A型,必須使用因素。
非常感謝您的幫助。
也許這很簡單,但我無法在網上找到答案。我的平均值是按等級計算的。 我的數據看起來typicaly:意思是因子水平
factor, value
a,1
a,2
b,1
b,1
b,1
c,1
我想向量A中包含的意思是隻爲「A」級 如果我在康壽我想1.5 這種方法用於計算平均值A型,必須使用因素。
非常感謝您的幫助。
只是爲了好玩張貼data.table
的解決方案,雖然你可能應該做的@lukeA建議
library(data.table)
A <- setDT(df[df$factor == "a", ])[, mean(value)]
## [1] 1.5
看看tapply
,它可以讓你根據因子(S)分手的載體和使用函數應用到每個子
> dat<-data.frame(factor=sample(c("a","b","c"), 10, T), value=rnorm(10))
> r1<-with(dat, tapply(value, factor, mean))
> r1
a b c
0.3877001 -0.4079463 -1.0837449
> r1[["a"]]
[1] 0.3877001
您可以訪問結果r1[["a"]]
等
或者,其中一種流行的R軟件包(plyr
)有很好的方法來做到這一點。
> library(plyr)
> r2<-ddply(dat, .(factor), summarize, mean=mean(value))
> r2
factor mean
1 a 0.3877001
2 b -0.4079463
3 c -1.0837449
> subset(r2,factor=="a",select="mean")
mean
1 0.3877001
您還可以使用dlply
代替(這需要一個數據幀,並返回一個列表,而不是)
> dlply(dat, .(factor), summarize, mean=mean(value))$a
mean
1 0.3877001
以下代碼要求當factor = a時的值的均值:
mean(data$value[data$factor == "a"])
另一種簡單的possibilty將是 「通過」 功能:
by(value, factor, mean)
你可以得到因子水平 「A」 由平均:
factor_means <- by(value, factor, mean)
factor_means[attr(factor_means, "dimnames")$factor=="a"]
嘗試'彙總(值〜因素, FUN = mean)' – Thomas
或'A < - mean(data $ value [data $ factor ==「a」])' – lukeA
@Bartek。如果您要完成遍歷數據框的工作以查找哪些元素是因子==「a」,那麼您可能需要在整個數據幀上執行操作,並在以後根據需要利用其他方法。 – JPC