我想查找值的数据框中的平均值。例如,如果我有以下数据:数据框中列的值的平均值?
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
错误。谁能帮我吗?谢谢!
我想查找值的数据框中的平均值。例如,如果我有以下数据:数据框中列的值的平均值?
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
错误。谁能帮我吗?谢谢!
如果我了解清楚你的要求,下面应该满足您的要求:
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"])
请记住,()
用于函数调用,[]
用于子集。你现在正在调用一个函数,而实际上没有函数,给出你看到的错误信息。
从更一般的意义上说,对于我喜欢使用的这些东西plyr
,尽管data.table
是一个很棒的其他选项。
library(plyr)
ddply(dataframe, .(Status), summarize, mean_value = mean(Value))
这将产生你新data.frame
与Value
为Status
每个唯一值的平均值。
至于@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)]
+1,使用'with'使得它在论文的情况下,更清晰,没有太多'$'S:'用(DF,平均(VAL [STA == “A”))' – Arun
甚至更具可读性(可争论的)可以是:with(subset(df,sta ==“A”),mean(val))' – flodel