如何计算特定国家/地区的利润中位数

时间:2012-08-29 19:39:59

标签: r median

大家好,              我是R的新手,我正在尝试计算数据框中特定国家/地区的中位数利润。我尝试过以下一个,但它对我不起作用。

data("Forbes2000", package = "HSAUR")
median(Forbes2000[,"sales","country"="United States"])

3 个答案:

答案 0 :(得分:5)

median(Forbes2000$sales[Forbes2000$country == "United States"])

虽然很难确定您的数据框架是什么样的。如果你想得到一个data.frame,其中包含每个国家的中位数而不是一个,你可以这样做:

library(plyr)
ddply(Forbes2000, "country", function(d) median(d$sales))

(您必须先安装plyr软件包,例如执行install.packages("plyr"))。

答案 1 :(得分:2)

大卫已经回答了您的初步问题,并向您展示了查找多个国家/地区中位数的方法。这是另一种方式:

您可以按国家/地区split data.frame创建list data.frame个 对于每个国家

L <- split(Forbes2000, Forbes2000$country)

然后,您可以将函数应用于list的每个组件 lapplysapply。 (sapply将结果简化为数组,而 lapply返回list

sapply(L, function(x) {
    median(x$sales)
})

或,在一行

sapply(split(Forbes2000, Forbes2000$country), function(x) median(x$sales))

答案 2 :(得分:0)

我能够使用以下数据计算数据框'outcome3'中US州的第11列中度量标准的中值:

tapply(outcome3[,11], outcome3$State, median)