5.1 一个数据处理难题
5.2 数值和字符处理函数
5.2.1 数学函数
数学函数
函数 | 描述 |
---|---|
abs(x) | 绝对值abs(-4)返回值为4 |
sqrt(x) | 平方根sqrt(25)返回值为5 |
ceiling(x) | 不小于x的最小整数 |
floor(x) | 不大于x的最大整数 |
trunc(x) | 向0的方向截取的x中的整数部分 |
round(x, digits=n) | 将x舍入为指定位的小数 |
signif(x, digits=n) | 将x舍入为指定的有效数字位数 |
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) | 对x取以n为底的对数 |
log10(x) | log(x)为自然对数,log10(x)为常用对数 |
exp(x) | 指数函数 |
5.2.2 统计函数
统计函数
函数 | 描述 |
---|---|
mean(x) | 平均数 |
median(x) | 中位数 |
sd(x) | 标准差 |
var(x) | 方差 |
mad(x) | 绝对中位差 |
quantile(x,probs) | 求分位数,probs[0,1] |
range(x) | 求值域 |
sum(x) | 求和 |
diff(x,lag=n) | 滞后差分 |
min(x) | 求最小值 |
max(x) | 求最大值 |
scale(x, center=TRUE, scale=TRUE) | 为数据对象x按列进行中心化或标准化 |
5.2.3 概率函数
d = density 密度函数
p = probabilty 分布函数
q = quatile function 分位数函数
r = random 生成随机数
概率分布
分布名称 | 缩写 | 分布名称 | 缩写 |
---|---|---|---|
Beta分布 | beta | Logistic分布 | logis |
二项分布 | binom | 多项分布 | multinom |
柯西分布 | cauchy | 负二项分布 | nbinom |
卡方分布 | chisq | 正态分布 | norm |
指数分布 | exp | 泊松分布 | pois |
F分布 | f | Wilcoxon符号秩分布 | signrank |
Gamma分布 | gamma | t分布 | t |
几何分布 | geom | 均匀分布 | unif |
超几何分布 | hyper | Weibull分布 | weibull |
对数正态分布 | lnorm | Wilcoxon秩和分布 | wilcox |
5.2.4 字符处理函数
字符处理函数
函数 | 描述 |
---|---|
nchar(x) | 计算x中的字符数量 |
substr(x, start, stop) | 提取或替换一个字符向量中的子串 |
grep(pattern, x, ignore.case=FALSE, fixed=FALSE) | 在x中搜索某种模式,pattern为正则表达式 |
sub(pattern, replacement,x, ignore.case=FALSE, fixed=FALSE) | 在x中搜索pattern,并以replacement将其替换。 |
strsplit(x, split, fixed=FALSE) | 在split处分割字符向量x中的元素 |
paste(..., sep=" ") | 连接字符串,分隔符为sep |
toupper(x) | 大写转换 |
tolower(x) | 小写转换 |
5.2.5 其他实用函数
函数 | 描述 |
---|---|
length(x) | 对象x的长度 |
seq(from, to, by) | 生成一个序列 |
rep(x,n) | 将x重复n次 |
cut(x,n) | 将连续型变量x分割为有着n个水平的因子 |
pretty(x,n) | 创建美观的分割点,绘图中常用 |
cat(... , file ="myfile", append=FALSE) | 连接...中的对象,并将其输出到屏幕上或文件中 |
5.2.6 将函数应用于矩阵和数据框
apply()函数:可将一个任意函数“应用”到矩阵、数组、数据框的任何维度上。
使用格式为:apply(x, MARGIN, FUN, ...)
x=数据对象,MARGIN是维度下标,FUN是由指定的函数
5.3 数据处理难题的一套解决方案
5.4 控制流
正常情况,R程序中的语句都是从上至下顺序执行的,但有时想重复执行某些语句---控制流发挥作用
- 语句statement: 是一条单独的R语句或一组复合语句
- 条件cond:是一条最终被解析为TRUE or FALSE的表达式
- 表达式expr:是一条数值或字符串的求值语句
- 序列seq:是一个数值或字符串序列
5.4.1 重复和循环
循环结构重复地执行一个或一系列语句,知道某个条件不为真为止。
- for结构:for循环重复地执行一个语句,直到某个变量的值不再包含在序列seq中为止。for (var in seq) statement
eg. for (1 in 10) print ("Hello") - while结构: while循环重复地执行一个语句,直达条件不为真为止。while (cond) statement
eg. i <- 10
while (i>0) {print ("Hello"); i <- i-1)
5.4.2 条件执行
- if-else结构
if (cond) statement
if (cond) statement1 else statement2 - ifelse结构
ifelse (cond, statement1, statement2) - switch结构
switch(expr, ...)
5.5 用户自编函数
myfunction <- function (arg1, arg2, ...) {
statements
return(object)
}
5.6 整合与重构
5.6.1 转置 t()
5.6.2 整合数据 aggregate(x, by, FUN)
5.6.3 reshape2包
reshape2包是一套重构和整合数据集的绝妙的万能工具。
数据融合melt
数据重铸cast