问题
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"])
回答1:
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")
).
回答2:
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))
回答3:
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)
来源:https://stackoverflow.com/questions/12185319/how-to-calculate-median-of-profits-for-a-particular-country