基于R的高级数据管理

知识点:
    数学和统计函数
    字符处理函数
    数据整合与重塑

环境:
    R version 3.3.1

问题:
    一组学生参加了数学、科学和英语考试,所有学生确定一个单一的成绩衡量指标。将前 20% 的学生评定为 A,接下来 20% 的学生评定为 B,依次类推。最后,希望按字母顺序对学生排序。




代码:

options(digits=2) #限定输出小数点后数字的位数


Student <- c("John Davis", "Angela Williams", "Bullwinkle Moose",

             "David Jones", "Janice Markhammer", "Cheryl Cushing",

             "Reuven Ytzrhak", "Greg Knox", "Joel England",

             "Mary Rayburn")

Math <- c(502, 600, 412, 358, 495, 512, 410, 625, 573, 522)

Science <- c(95, 99, 80, 82, 75, 85, 80, 95, 89, 86)

English <- c(25, 22, 18, 15, 20, 28, 15, 30, 27, 18)

roster <- data.frame(Student, Math, Science, English,

                     stringsAsFactors=FALSE)


z <- scale(roster[,2:4]) #变量进行标准化


score <- apply(z, 1, mean) #计算各行的均值以获得综合得分


roster <- cbind(roster, score) #添加到花名册中


y <- quantile(roster$score, c(.8,.6,.4,.2)) #学生综合得分的百分位数


roster$grade[score >= y[1]] <- "A"

roster$grade[score < y[1] & score >= y[2]] <- "B"

roster$grade[score < y[2] & score >= y[3]] <- "C"

roster$grade[score < y[3] & score >= y[4]] <- "D"

roster$grade[score < y[4]] <- "F"


name <- strsplit((roster$Student), " ") #以空格为界把学生姓名拆分为姓氏和名字

Firstname <- sapply(name, "[", 1) #"["是一个可以提取某个对象的一部分的函数

Lastname <- sapply(name, "[", 2)


roster <- cbind(Firstname, Lastname, roster[,-1])


roster[order(Lastname,Firstname),] #依姓氏和名字对数据集进行排序



结果:






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值