5

我是 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)得到唯一的状态和学生的数量,但我不知道如何计算状态的唯一值的平均值。

4

2 回答 2

11

执行此操作的许多方法之一:

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
于 2013-02-17T18:55:53.293 回答
0

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

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

将为您提供每个独特州的平均 GPA 以及学生人数(行数)。

于 2019-09-29T19:23:28.950 回答