scr <- read.csv("D:/hw/scr.csv", fileEncoding = 'utf-8')
scr
##    sname cname cr gr
## 1 Fisher  Stat  3  A
## 2 Fisher  Calc  3  B
## 3 Fisher  Gene  3  A
## 4 Turing  Comp  3  A
## 5 Turing  Stat  3  A
## 6 Turing  Phil  2  A
## 7   Jobs  Comp  3  C
## 8   Jobs Human  2  B
scr$pt <- ifelse(scr$gr=='A',4,
                 ifelse(scr$gr=='B',3,
                        ifelse(scr$gr=='C',2,
                               ifelse(scr$gr=='D',1,0))))

scr
##    sname cname cr gr pt
## 1 Fisher  Stat  3  A  4
## 2 Fisher  Calc  3  B  3
## 3 Fisher  Gene  3  A  4
## 4 Turing  Comp  3  A  4
## 5 Turing  Stat  3  A  4
## 6 Turing  Phil  2  A  4
## 7   Jobs  Comp  3  C  2
## 8   Jobs Human  2  B  3
scr <- within(scr, cpt<-cr*pt)
scr
##    sname cname cr gr pt cpt
## 1 Fisher  Stat  3  A  4  12
## 2 Fisher  Calc  3  B  3   9
## 3 Fisher  Gene  3  A  4  12
## 4 Turing  Comp  3  A  4  12
## 5 Turing  Stat  3  A  4  12
## 6 Turing  Phil  2  A  4   8
## 7   Jobs  Comp  3  C  2   6
## 8   Jobs Human  2  B  3   6
fisher <- subset(scr, sname=='Fisher')
turing <- subset(scr, sname=='Turing')
jobs <- subset(scr, sname=='Jobs')
scr
##    sname cname cr gr pt cpt
## 1 Fisher  Stat  3  A  4  12
## 2 Fisher  Calc  3  B  3   9
## 3 Fisher  Gene  3  A  4  12
## 4 Turing  Comp  3  A  4  12
## 5 Turing  Stat  3  A  4  12
## 6 Turing  Phil  2  A  4   8
## 7   Jobs  Comp  3  C  2   6
## 8   Jobs Human  2  B  3   6
ncrs <- nrow(fisher)
totcr <- sum(fisher$cr)
totcpt <- sum(fisher$cpt)
gpa <- totcpt/totcr
gpafisher <- data.frame(sname='Fisher', ncrs=ncrs, totcr=totcr, totcpt=totcpt, gpa=gpa)

gpafisher
##    sname ncrs totcr totcpt      gpa
## 1 Fisher    3     9     33 3.666667
gpa <- function(df){
  sname <- df$sname[1]
  ncrs <- nrow(df)
  totcr <- sum(df$cr)
  totcpt <- sum(df$cpt)
  gpa <- totcpt/totcr
  data.frame(sname=sname, ncrs=ncrs, totcr=totcr, totcpt=totcpt, gpa=gpa)
}
gpa(fisher)
##    sname ncrs totcr totcpt      gpa
## 1 Fisher    3     9     33 3.666667
rbind(gpa(fisher),gpa(turing),gpa(jobs))
##    sname ncrs totcr totcpt      gpa
## 1 Fisher    3     9     33 3.666667
## 2 Turing    3     8     32 4.000000
## 3   Jobs    2     5     12 2.400000