- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Chapter05 高级数据管理1
第5章高级数据管理 本章内容 ? 数学和统计函数 ? 字符处理函数 ? 循环和条件执行 ? 自编函数 ? 数据整合与重塑 5.1 一个数据处理难题 5.2 数值和字符处理函数 作为数据处理基石的函数,它们可分为数值(数学、统计、概率)函数和字符处理函数 5.2.1 数学函数 5.2.2 统计函数 代码清单5-1。这段代码演示了计算某个数值向量的均值和标准差的两种方式 5.2.3 概率函数 1. 设定随机数种子 在每次生成伪随机数的时候,函数都会使用一个不同的种子,因此也会产生不同的结果。你可以通过函数set.seed()显式指定这个种子,让结果可以重现(reproducible)。代码清单5-2给出了一个示例。这里的函数runif()用来生成0到1区间上服从均匀分布的伪随机数。 2. 生成多元正态数据 在模拟研究和蒙特卡洛方法中,你经常需要获取来自给定均值向量和协方差阵的多元正态分布的数据。MASS包中的mvrnorm()函数可以让这个问题变得很容易。其调用格式为: 其中n是你想要的样本大小,mean为均值向量,而sigma是方差?协方差矩阵(或相关矩阵)。在代码清单5-3中,你将从一个参数如下所示的三元正态分布中抽取500个观测。 5.2.4 字符处理函数 5.2.5 其他实用函数 5.2.6 将函数应用于矩阵和数据框 R函数的诸多有趣特性之一,就是它们可以应用到一系列的数据对象上,包括标量、向量、矩阵、数组和数据框。代码清单5-4提供了一个示例。 R中提供了一个apply()函数,可将一个任意函数“应用”到矩阵、数组、数据框的任何维度上。apply函数的使用格式为: 其中,x为数据对象,MARGIN是维度的下标,FUN是由你指定的函数,而...则包括了任何想传递给FUN的参数。在矩阵或数据框中,MARGIN=1表示行,MARGIN=2表示列。请看代码清单5-5中的例子。 FUN可为任意R函数,这也包括你自行编写的函数(参见5.4节),所以apply()是一种很强大的机制。 apply()可把函数应用到数组的某个维度上,而lapply()和sapply()则可将函数应用到列表(list)上。你将在下一节中看到sapply(它是lapply的更好用的版本)的一个示例。 5.3 数据处理难题的一套解决方案 5.1节中提出的问题是:将学生的各科考试成绩组合为单一的成绩衡量指标、基于相对名次(前20%,下20%,等等)给出从A到F的评分、根据学生姓氏和名字的首字母对花名册进行排序。代码清单5-6给出了一种解决方案。 步骤1 原始的学生花名册已经给出了。options(digits=2)限定了输出小数点后数字的位数,并且让输出更容易阅读。 步骤2 由于数学、科学和英语考试的分值不同(均值和标准差相去甚远),在组合之前需要先让它们变得可以比较。一种方法是将变量进行标准化,这样每科考试的成绩就都是用单位标准差来表示,而不是以原始的尺度来表示了。这个过程可以使用scale()函数来实现: 步骤3 然后,可以通过函数mean()来计算各行的均值以获得综合得分,并使用函数cbind()将其添加到花名册中: 步骤4 函数quantile()给出了学生综合得分的百分位数。可以看到,成绩为A的分界点为0.74,B的分界点为0.44,等等。 步骤5 通过使用逻辑运算符,你可以将学生的百分位数排名重编码为一个新的类别型成绩变量。下面在数据框roster中创建了变量grade。 步骤6 你将使用函数strsplit()以空格为界把学生姓名拆分为姓氏和名字。把strsplit()应用到一个字符串组成的向量上会返回一个列表: 步骤7 你可以使用函数sapply()提取列表中每个成分的第一个元素,放入一个储存名字 的向量,并提取每个成分的第二个元素,放入一个储存姓氏的向量。[是一个可以提取某个对 象的一部分的函数——在这里它是用来提取列表name各成分中的第一个或第二个元素的。你将 使用cbind()把它们添加到花名册中。由于已经不再需要student变量,可以将其丢弃(在下标 中使用-1) 步骤8 最后,可以使用函数order()依姓氏和名字对数据集进行排序:
您可能关注的文档
最近下载
- 痕迹检验复习试题有答案.doc
- 未成年人充值退款起诉书.docx VIP
- 2025年中国移动校园招聘考试笔试题库历年考试试题及答案.docx VIP
- 定量CT在健康管理中的应用指南(2024).pdf
- 《网约车运营管理》教学课件4-5 潜在客户分析及客户忠诚度提升.ppt VIP
- 排水泵房安全检查表.docx
- 我国实现双碳目标面临的现实挑战与对策建议.docx VIP
- 农技指导油菜机械化播栽与收获技术.pdf
- 第15课+列强入侵与中国人民的反抗斗争【中职专用】《中国历史》(高教版2023基础模块)-20240416165039.pptx
- 仁爱八年级下册Unit6Topic3SectionC优质公开课.ppt VIP
文档评论(0)