大家好, 我是R的新手,我正在尝试计算数据框中特定国家/地区的中位数利润。我尝试过以下一个,但它对我不起作用。
data("Forbes2000", package = "HSAUR")
median(Forbes2000[,"sales","country"="United States"])
答案 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
的每个组件
lapply
或sapply
。 (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)