《R语言实战》第五章学习笔记

  感谢Robert I.Kabacoff 著作本书,同时感谢高涛、肖楠、陈钢编译此书。

  最近在学习《R语言实战》,特将学习过程记录下来,供各位朋友参考,虽说是笔记,但是90%是书中内容,另外10%是自己偶尔冒出的一点点想法的记录和一些疑问,希望互相探讨。末尾有本章的代码清单下载地址,与各位交流,还是提倡按照书中内容把代码一个个敲出来。

第五章  高级数据管理

本章内容

数学和统计函数

字符处理函数

循环和条件执行

自编函数

数据整合与重塑



5.1  一个数据处理难题

  一个难题:

  1. 三科成绩是无法比较的。
  2. 需要一种方法来确定某个学生在前述得分上百分比排名。
  3. 表示姓名的字段只有一个,需要将姓和名拆开。



5.2  数值和字符处理函数

  本节将学习R中作为数据处理基石的函数,它们可分为数值(数学、统计、概率)函数和字符处理函数。



5.2.1  数学函数

  书中表5-2列出了常用的数学函数和简短的用例。(P83页)

  值得一提的是round(x, digits = n) 表示将x舍入为指定位的小数

  signif(x, digits = n)表示将x舍入为指定的有效数字位数

对比如下

round(3.475, digits = 2)返回值为3.48。(保留两位小数)
signif(3.475, n= = 2)返回值为3.5。(保留两位有效数字)

  表5-2中的示例将数学函数应用到了标量(单独的数值)上。当这些函数被应用于数值向量、矩阵或者数据框时,它们会作用于其中每一个独立的值,然后重新生成一个向量、矩阵或数据框。



5.2.2  统计函数

  方差:表示点的离散程度。方差越小,离散程度越低,越接近平均值。公式表达为:
S=[ (x1-x)^2+(x2-x)^2+(x3-x)^2+……+(xn-x)^2]

  标准差是方差开根号。

  什么是绝对中位差、分位数、值域、滞后差分、进化中心化、标准化?

代码清单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 <- sqrt(css / (n-1))

meanx

sdx

  第二种方式中修正平方和(css)的计算过程是很有启发性的:

(1) x等于c(1, 2, 3, 4, 5, 6, 7, 8),x的平均值等于4.5(length(x)返回了x中元素的数量):

(2) (x - meanx)从x中的每个元素中减去了4.5,结果为c(-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5)

(3) (x - meanx)^2将(x - meanx)的每个元素求平方,结果为c(12.25, 6.25, 2.25, 0.25, 0.25, 2.25, 6.25, 12.25)

(4) summ((x - meanx)^2)对((x - meanx)^2)的所有元素求和,结果为42。

数据的标准化

  将一组数据,投射到很小区间内的方法,便于分析。标准化之后的数据有这样的特征:均值为0,标准差为1。

  函数scale()对矩阵或数据框的制定了进行均值为0,标准差为1的标准化。

newdata <- scale(mydata

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

newdata <- scale(mydata) * SD + M

  其中SD表示想要的标准差,M表示想要的均值。注意,在非数值型的列上用scale()函数会报错。如果要对指定列而不是整个数据框或矩阵进行标准化,可以使用如下代码:

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

  此句将变量myvar标准化为均值50、标准差为10的变量。

问:是否

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值