我是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)
来获得独特的状态和学生数量,但我不知道如何计算独特的状态值的均值。
答案 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以及学生人数(行数)。