根据2个其他列RStudio查找一列的平均值

时间:2017-11-19 19:58:18

标签: r group-by rstudio aggregate mean

我目前有一个包含三列(城市,州和收入)的数据框我写下了以下数据的示例...

City     State     Income 
Addison  Illinois   71,000
Addison  Illinois   101,000
Addison  Illinois   81,000
Addison  Texas      74,000

正如你所看到的那样,有重复的城市。有几个Addison,IL,因为收入因城市的邮政编码/区域而异。

我想取一个城市和州的所有收入的平均值。在这个例子中,我想要所有Addison IL的平均值,但不包括德克萨斯州Addison。

我正在寻找这个(在这个给定的例子中)

City    State    MeanIncome
Addison Illinois  84,333
Addison Texas     74,000

我试过了:

Income_By_City <- aggregate( Income ~ City, df, mean ) 

但它给了我所有艾迪生的平均值,包括得克萨斯......

有没有办法根据城市和州来取得收入栏的平均值?

我对编码很新,所以我不确定这是一个简单的问题。但我很感激能得到的任何帮助。

2 个答案:

答案 0 :(得分:3)

df <- data.frame(City = c("Addison", "Addison", "Addison", "Addison"), State = c("Illinois", "Illinois", "Illinois", "Texas"), Income = c(71000, 101000, 81000, 74000))

library(dplyr)
df %>%
   group_by(City, State) %>%
   summarise(MeanIncome=(mean(Income)))


#     City     State   MeanIncome
#1 Addison  Illinois   84333.33
#2 Addison     Texas   74000.00

答案 1 :(得分:0)

这是一个dplyr解决方案:

library(tidyverse)

df <- tribble(
~City,      ~State,      ~Income, 
"Addison",  "Illinois",  71000,
"Addison",  "Illinois",  101000,
"Addison",  "Illinois",  81000,
"Addison",  "Texas",     74000
)

df %>% 
  group_by(City, State) %>% 
  mutate(AverageIncome = mean(Income))

# A tibble: 4 x 4
# Groups:   City, State [2]
     City    State Income AverageIncome
    <chr>    <chr>  <dbl>         <dbl>
1 Addison Illinois  71000      84333.33
2 Addison Illinois 101000      84333.33
3 Addison Illinois  81000      84333.33
4 Addison    Texas  74000      74000.00