0

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

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

3 回答 3

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

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

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

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

于 2012-08-29T19:41:32.633 回答
2

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

您可以split按国家/地区为每个国家/地区data.frame创建一个listdata.frame

L <- split(Forbes2000, Forbes2000$country)

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

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

或者,在一行中

sapply(split(Forbes2000, Forbes2000$country), function(x) median(x$sales))
于 2012-08-30T00:07:39.383 回答
0

我能够使用美国州在数据框“结果 3”中计算第 11 列中指标的中值:

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

于 2014-01-23T16:12:33.330 回答