R:通过数据框中另一个变量的唯一值计算变量的平均值?

时间:2013-02-17 18:49:30

标签: r

我是R.的新手。我有一个如下所示的数据框:

Pupil ID     State      GPA
1            FL         3.9
2            TX         3.2
3            NY         2.2
4            AK         3.0
5            CO         2.4

...等。我想要做的是创建一个如下所示的新数据框:

State        Mean GPA     Number of pupils 
AL           2.91         23
AK           3.23         24

等等。换句话说,我想找到状态的唯一值,并计算每一个的平均GPA和每个学生的数量。

这可能在R?我知道我可以table(data$State)来获得独特的状态和学生数量,但我不知道如何计算独特的状态值的均值。

2 个答案:

答案 0 :(得分:8)

执行此操作的方法之一:

x <- read.table(header=T, text="Pupil.ID     State      GPA
1            FL         3.9
2            TX         3.2
3            NY         2.2
4            AK         3.0
5            CO         2.4")

aggregate(GPA~State, data=x, FUN=function(x) c(mean=mean(x), count=length(x)))
##   State GPA.mean GPA.count
## 1    AK      3.0       1.0
## 2    CO      2.4       1.0
## 3    FL      3.9       1.0
## 4    NY      2.2       1.0
## 5    TX      3.2       1.0

答案 1 :(得分:0)

最好的方法是将dplyr软件包中的group_by()summarise()结合使用。 如果df是您的数据帧,

df %>%
   group_by(State) %>%
   summarise(mean_GPA = mean(GPA),
             number_of_pupils = n())

将为您提供每个唯一状态的平均GPA以及学生人数(行数)。