数据框中列的值的平均值?

时间:2013-11-29 06:26:36

标签: r dataframe mean

我想在数据框中找到值的平均值。例如,如果我有以下数据:

ID Value Status
1   10     A
2   15     B
3   20     A

我想找到状态为A的所有值的平均值。我该怎么做?

这是我的尝试:

dataframe$balance.mean(dataframe$status == 'A')

但我一直收到Error: attempt to apply non-function的错误。谁能帮我吗?谢谢!

3 个答案:

答案 0 :(得分:12)

如果我清楚地了解您的要求,以下内容应符合您的要求:

 id<-c(1,2,3)
 val<-c(10,15,20)
 sta<-c("A","B","A")

 df<-data.frame(id,val,sta)

 mean(df$val[df$sta=="A"])

答案 1 :(得分:3)

请记住,()用于函数调用,[]用于子集化。你现在正在调用一个函数,而实际上没有函数,给出你看到的错误信息。

从更广泛的意义上讲,对于我喜欢使用plyr的这类事情,尽管data.table是一个非常棒的选择。

library(plyr)
ddply(dataframe, .(Status), summarize, mean_value = mean(Value))

这将为您生成一个新的data.frame,其Value的每个唯一值的平均值为Status

答案 2 :(得分:3)

正如@PaulHiemstra所暗示的那样,有一个干净的data.table解决方案:

library(data.table)
DT[Status=="A", mean(val)]

其中DT <- as.data.table(your_data_frame)


或者您可以设置密钥以获得更快的结果:

setkey(DT, "status")
# this will produce a data.table, not a single 
DT["A", mean(val)]
# This produces a single number
DT["A"] [, mean(val)]