利用条件计数创建函数

时间:2013-02-14 22:51:59

标签: r conditional

我想开发一个自动化成绩分析过程的功能。

在一栏中,学生的辅导时间是多少,下一栏是他或她的成绩。

对于三组,我必须计算As(A + s和A-s),Bs(B + s和A-s),Cs,Ds,Fs,Ws的数量并计算每个的GPA。这些团体是那些有6个小时或更长时间的人,那些没有工作时间的人,以及那些有课外辅导的人。

是否可以在R中创建一个简单的函数,例如成绩(小时,标记),类似于摘要()功能,可以打印三个类别每个都有以下信息:

  1. A,B,C,D,F,W的任何类型(包括A-s,As和A + s等)的学生人数
  2. 计算GPA:(4 * A + 3 * B + 2 * C + 1 * D + 0 * F + 0 * W)/(A + B + C + D + F - W)
  3. 这甚至可以用R做吗?我从哪里开始?

    感谢。

1 个答案:

答案 0 :(得分:0)

> Hours=c(0,5,6,10,0);Grades=c("F","A-","A","A+","C-") 
> grpHrs <- Hours >= 6
> table( substr(Grades, 1,1), grpHrs)
   grpHrs
    FALSE TRUE
  A     1    2
  C     1    0
  F     1    0

很难知道需要什么样的GPA计算,因为很明显这些是不同的学生。如果这些都来自同一个学生那么:

grdABCDFW <- substr(Grades,1,1)



sum( 4* (grdABCDFW=="A")+
     3*(grdABCDFW=="B")+
     2*(grdABCDFW=="C")+ 
     1*(grdABCDFW=="D")+ 
     0*(grdABCDFW=="F")+ 0*(grdABCDFW=="W") )/
                 length(Grades[ !is.na(Grades)] )
#[1] 2.8

发表评论。也许:

Hours.time=function(Hours, Grades, cutpt){  
                 grpHrs <- Hours >= cutpt
                 tbl <- table( substr(Grades,1,1), grpHrs)
                 colnames(tbl) <- c(  paste("Fewer than ", cutpt),
                                     paste( cutpt, "or more") )
                  tbl }
 Hours.time(Hours, Grades,6)
 #-------
   grpHrs
    Fewer than  6 6 or more
  A             1         2
  C             1         0
  F             1         0