I want to find the mean across a dataframe of values. For example, if I have the following data:
ID Value Status
1 10 A
2 15 B
3 20 A
And I want to find the mean of all values with the status A in it. How would I do so?
Here is my attempt:
dataframe$balance.mean(dataframe$status == 'A')
But I keep getting an error that says Error: attempt to apply non-function
. Can anyone help me out? Thanks!
If I understood your requirement clearly, following should meet your requirement:
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"])
Remember that ()
is used for function calls, []
are used for subsetting. Your are now calling a function while there is actually no function, giving the error message you see.
In a more general sense, for these kinds of things I like to use plyr
, although data.table
is an awesome other option.
library(plyr)
ddply(dataframe, .(Status), summarize, mean_value = mean(Value))
This will yield you a new data.frame
with the average values of Value
for each unique value of Status
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With