第五章 高级数据管理 本章概要 1 数学和统计函数 2 字符函数 3 循环和条件执行 4 用户所写函数 5 聚合和改造数据的方法 本章所介绍内容概括如下。 本章是数据管理高级主题,包含三部分,第一部分,数学、统计、字符操作的函数;第二部分,用户所写函数实现数据管理和分析任务;第三部分,总结、聚合和改造数据的方式。 数据管理的挑战 学生考试数据如图1所示。 图1:学生考试数据 想一想,如何管理上述数据,又如何发现该数据的价值? 数值和字符函数 数值函数,包括数学、统计和概率函数。 常用数学函数如图2所示。 图2:常用数学函数 举例说明如下: > rm(list=ls()) > abs(-2) [1] 2 > sqrt(c(1,4,9)) [1] 1 2 3 > ceiling(3.4) [1] 4 > floor(3.4) [1] 3 > trunc(3.4) [1] 3 > round(3.48,digits=1) [1] 3.5 > signif(3.48, digits=1) [1] 3 > cos(pi/3) [1] 0.5 > sin(pi/2) [1] 1 > tan(pi/4) [1] 1 > acos(1) [1] 0 > asin(1) [1] 1.570796 > atan(1) [1] 0.7853982 > cosh(1) [1] 1.543081 > sinh(1) [1] 1.175201 > tanh(1) [1] 0.7615942 > acosh(1) [1] 0 > asinh(1) [1] 0.8813736 > atanh(1) [1] Inf > log(10,base=10) [1] 1 > log(10) [1] 2.302585 > log10(10) [1] 1 > exp(2) [1] 7.389056 常用统计函数如图3所示: 图3:常用统计函数 举例说明如下: > mean(c(1,2,3)) [1] 2 > median(c(1,2,3,4)) [1] 2.5 > sd(c(1,2,3,4)) [1] 1.290994 > var(c(1,2,3,4)) [1] 1.666667 > mad(c(1,2,3,4)) [1] 1.4826 > x <- rnorm(100) > y <- quantile(x, c(.3,.84)) > y 30% 84% -0.6016543 0.8953049 > rang(c(1,2,3,4)) Error: could not find function “rang” > range(c(1,2,3,4)) [1] 1 4 > sum(c(1,2,3,4)) [1] 10 > diff(c(1,4,10,100)) [1] 3 6 90 > diff(c(1,4,10,100),lag=2) [1] 9 96 > min(c(1,2,3,4)) [1] 1 > max(c(1,2,3,40)) [1] 40 计算平均值和标准差的两种方法。 方法一:直接使用统计函数 > rm(list=ls()) > x <- c(1,2,3,4,5,6,7,8) > mean(x) [1] 4.5 > sd(x) [1] 2.44949 方法二:利用统计学对平均值和标准差的定义式 > rm(list=ls()) > x <- c(1,2,3,4,5,6,7,8) > n <- lenght(x) Error: could not find function “lenght” > n <- length(x) > meanx <- sum(x) / n > css <- sum((x - meanx)**2) > sdx <- sqrt(css / (n-1)) > meanx [1] 4.5 > sdx [1] 2.44949 拓展:归一化函数scale() 常用与概率学相关的函数。 四个名字:概率密度(d)、概率分布函数(p)、概率分位数(q)、概率随机数(r)。 图4:概率学相关函数 举例说明如下: > rm(list=ls()) > x <- pretty(c(-3,3), 30) > y <- dnorm(x) > plot(x,y,type=”l”,xlab=”Normal Deviate”, ylab=”Density”,yaxs=”i”) > pnorm(2) [1] 0.9772499 > qnorm(0.975) [1] 1.959964 效果图如图5所示。 图5:标准正态分布概率密度曲线 为了进行可重复性实验,我们产生随机数,需要设置种子,举例说明如下: > runif(5) [1] 0.07873035 0.93082409 0.05424750 0.96919193 0.52518331 > runif(5) [1] 0.86842132 0.91613675 0.13160823 0.22718509 0.06111121 > set.seed(100) > runif(5) [1] 0.30776611 0.25767250 0.55232243 0.05638315 0.46854928 |
|广告服务|关于我们|Archiver|手机版|小黑屋|大数据人 ( 鄂ICP备14012176号-2 )
GMT+8, 2024-5-4 00:46 , Processed in 0.205127 second(s), 21 queries .
Powered by 小雄! X3.2
© 2014-2020 bigdataer Inc.