2022年5月22日星期日

第五章(一):数学函数和统计函数

R中作为数据处理基石的函数,可以分为数值(数学、统计、概率)函数与字符处理函数

数学函数

表5-2数学函数

函数描述示例
abs(x)绝对值abs(-4)返回值为4
sqrt(x)平方根sqrt(25)返回值为5
ceilling(x)不小于x的最小整数ceiling(3.475)返回值为4
floor(x)不大于x最大整数floor(3.475)返回值为3
frunc(x)向0的方向截取x中的整数部分trunc(5.99)返回值为5
round(x, digits = n)将x舍入为指定位的小数round(3,475, digits =2)返回值为3.48
signif(x, digits = n)将x舍入为指定的有效数字位数signif(3.475, digits =2)返回值为3.5
cos(x), sin(x),tan(x)余弦、正弦、和正切cos(2)返回值为-0.416
acos(x), asin(x), atan(x)反余弦、反正弦、反正切acos(-0.416)返回值为2
cosh(x), sinh(x), tanh(x)双曲余弦、双曲正弦、双曲正切sinh(2)返回值为30627
acosh(x), asinh(x), atanh(x)反双曲余弦、反双曲正弦、反双曲正切asinh(3.627)返回值为2
log(x,base = n)对x取以n为底的对数
log(x)自然对数log(2) = 1
log10(x)常用对数log10(10) = 1
exp(x)指数函数exp(2.3026) = 10

对数据变换是这些函数的一个主要用途。

当这些数学函数被应用于数值向量、矩阵或数据框时,他们会作用于每一个独立的值

观察下列应用返回的值

squrt(c(4, 16, 25))
#返回值为c(2, 4, 5)

统计函数

许多统计函数都拥有可以影响输出结果的可选参数,例如

z <- mean(x, trim = 0.05, na.rm = TRUE)

上述命令提供了截尾平均数,即丢弃了最大的5%和最小的5%的数据和所有缺失值后的算术平均数。

表5-3 统计函数

函数描述举例
mean(x)平均数
median(x)中位数
sd(x)标准差
var(x)方差
mad(x)绝对中位数mad(c(1, 2,3, 4)) = 1.48
quantile(x, probs)求分位数,其中x为待求分位数的数值型向量,probs为一个由[0,1]之间的概率值组成的数值向量求x的30%和84%分为点 y <- quantile(x, c(0.3, 0.84))
range(x)求值域x <- c(1, 2, 3, 4) rang(x)返回值为c(1, 4)
sum(x)求和
diff(x, lag = n)滞后差分,lag用以指定滞后几项,默认的lag为1 x <- c(1, 5, 23, 29) diff(x)返回值为c(4, 18, 6)
min(x)求最小值
max(x)求最大值
scale(x, center = TRUE, scale = TRUE)为数据对象x按列进行中心化(center = TRUE)或标准化(center = TRUE, scale = TRUE)代码清单5-6中给出一个示例
#代码清单5-1 均值和标准差的计算 ####
x <- c(1, 2, 3, 4, 5, 6, 7, 8)
mean(x)
sd(x)
n <- length(x)
meanx <- sum(x)/n
css <- sum((x - meanx)^2)
sdx <-squrt(css / (n-1))
meanx
sdx

数据的标准化

默认情况下,函数scale()对矩阵或数据框的指定列进行均值为0、标准化为1的标准化

newdata <- scale(mydata)

要对每一列进行任意均值和标准差的标准化,可以使用如下代码

newdata <- scale(mydata)*SD +M

要对指定列而不是整个矩阵或数据框进行标准化,可以使用这样的代码

newdata <- transform(mydata, myvar = scale(myvar)*10 +50)

没有评论: