R语言高级数据管理

数学函数

函数 描述
abs(x) 绝对值
sqrt(x) 平方根
ceiling(x) 不小于x的最小整数
floor(x) 不大于x的最大整数
trunc(x) 向0方向截取整数部分
round(x,digits=n) 将x取为指定n位小数的数值,

round(3.475, digits=2)返回值为 3.48

signif(x,digits=n) 将x取为指定n位有效位的数值
cos(x)、sin(x)、tan(x) 余弦、正弦和正切
acos(x)、asin(x)、atan(x) 反余弦、反正弦和反正切
cosh(x)、sinh(x)、tanh(x) 双曲余弦、双曲正弦和双曲正切
acosh(x)、asinh(x)、atanh(x) 反双曲余弦、反双曲正弦和反双曲正切

log(x,base=n)

以n为底的x的对数值

log(x)

log10(x)

自然对数

常用对数

exp(x)

指数函数

统计函数

函数 描述
mean() 平均值
median() 中位数
std() 标准差
var() 方差
mad() 绝对中位差
quantile() 分位数
range() 值域
sum() 求和
diff()

滞后差分,lag 用以指定滞后几项。默认的 lag 值为 1x<- c(1, 5, 23, 29)

diff(x)返回值为 c(4, 18, 6)

min() 最小值
max() 最大值

scale(x,center=TRUE,

          scale=TRUE)

为数据对象 x 按列进行中心化(center=TRUE)或标准化(center=TRUE,scale=TRUE)

概率函数

在R中,概率函数形如 :[dpqr]distribution_abbreviation()

其中第一个字母表示其所指分布的某一方面:

  • d = 密度函数(density)
  • p = 分布函数(distribution function)
  • q = 分位数函数(quantile function)
  • r = 生成随机数(随机偏差)

生成随机种子

函数set.seed()。

生成多元正态数据

MASS包的mvrnorm()函数。

mvrnorm(n,mean,sigma)

其中n为样本的大小,mean为均值,sigma为方差--协方差矩阵(或相关矩阵)。

字符处理函数

其他实用函数

将函数应用到矩阵和数据框

R中提供了一个apply()函数,可将一个任意函数“应用”到矩阵、数组、数据框的任何维 度上。

apply()函数的使用格式为:

apply(x, MARGIN, FUN, ...)

实例:一个数据问题的解决

问题:将学生的各科考试成绩组合为单一的成绩衡量指标,基于相对名次 (前20%、下20%、等等)给出从A到F的评分,根据学生姓氏和名字的首字母对花名册进行排序。

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(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)," ")   #以空格为界将姓名拆分为姓氏和名
Lastname <- sapply(name, "[", 2)   
Firstname <- sapply(name, "[", 1)        #提取列表中每个成分的第一个元素,放入一个储存名字 的向量Firstname
roster <- cbind(Firstname,Lastname, roster[,-1])

#按姓氏进行排序
roster <- roster[order(Lastname,Firstname),]     
roster


**************************************************************
    Firstname   Lastname Math Science English score grade
6      Cheryl    Cushing  512      85      28  0.35     C
1        John      Davis  502      95      25  0.56     B
9        Joel    England  573      89      27  0.70     B
4       David      Jones  358      82      15 -1.16     F
8        Greg       Knox  625      95      30  1.34     A
5      Janice Markhammer  495      75      20 -0.63     D
3  Bullwinkle      Moose  412      80      18 -0.86     D
10       Mary    Rayburn  522      86      18 -0.18     C
2      Angela   Williams  600      99      22  0.92     A
7      Reuven    Ytzrhak  410      80      15 -1.05     F

猜你喜欢

转载自blog.csdn.net/PyDarren/article/details/84184984