使用“ by”按组计算​​平均值

时间:2018-06-23 05:14:41

标签: r

因此,我知道之前曾有人问过这个问题,但我似乎无法解决这个问题。我有一个数据表,其中:

Region    Price

New York  34
New York  89
Texas     46
Iowa      36
Iowa      38

我想计算每个不同区域的平均值。我正在使用此功能:

sum=by(data$Region,data$price, mean)

这给了我

34    N/A
89    N/A
46    N/A

以此类推。显然,我/我做错了任何事情……不胜感激!谢谢。

2 个答案:

答案 0 :(得分:2)

您提供的参数顺序错误。第一个参数应该是将在其上应用函数的数据。请尝试:

by(data$Price, data$Region, mean)

# data$Region: Iowa
# [1] 37
# ------------------------------------------------------------------------ 
#   data$Region: New York
# [1] 61.5
# ------------------------------------------------------------------------ 
#   data$Region: Texas
# [1] 46 

数据:

data <- read.table(text = 
"Region    Price
'New York'  34
'New York'  89
Texas     46
Iowa      36
Iowa      38",
header = TRUE, stringsAsFactors = FALSE)

答案 1 :(得分:1)

使用汇总:

region <- c("New York", "New York", "Texas", "Iowa", "Iowa")
price <- c(34, 89, 46,36,38)
data <- data.frame(region, price)
 aggregate.data.frame(data[,2],list(data$region) ,mean)