Hello folks, I am new to R and I am trying to compute median profit for a particular country in a data frame.I tried below one but it doesn't work for me.
data("Forbes2000", package = "HSAUR")
median(Forbes2000[,"sales","country"="United States"])
Hello folks, I am new to R and I am trying to compute median profit for a particular country in a data frame.I tried below one but it doesn't work for me.
data("Forbes2000", package = "HSAUR")
median(Forbes2000[,"sales","country"="United States"])
median(Forbes2000$sales[Forbes2000$country == "United States"])
Though it's hard to be certain without knowing what your data frame looks like. If you want to get a data.frame with the median of every country instead of just one, you could do:
library(plyr)
ddply(Forbes2000, "country", function(d) median(d$sales))
(You would have to install the plyr package first, for example by doing install.packages("plyr")
).
David already answered your initial question and showed you one way to find the median for multiple countries. Here is another way:
You can split
the data.frame
by country to create a list
of data.frame
s
for each country
L <- split(Forbes2000, Forbes2000$country)
Then, you can apply a function to each component of the list
with either
lapply
or sapply
. (sapply
simplifies the result to an array, whereas
lapply
returns a list
)
sapply(L, function(x) {
median(x$sales)
})
or, in one line
sapply(split(Forbes2000, Forbes2000$country), function(x) median(x$sales))
I was able to calculate median values for a metric in column 11 by US state in dataframe 'outcome3' using:
tapply(outcome3[,11], outcome3$State, median)