版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《R语言程序设计》教案任务一R语言入门及安装授课章节第1章初识R语言授课教师开课范围授课时间授课班级授课类型课时2课时教学目标(1)了解R语言简史(2)了解R语言在线资源与开发(3)在计算机上安装R软件,加载所需的数据包,R语言窗口中各菜单的内容。(4)在Linux和OSX平台运行R思政目标(1)坚定理想信念,激发爱国热情(2)引导创新意识教学重点(1)R语言在大数据中的应用(2)R语言开发教学难点在Linux和OSX平台运行R教学方法任务驱动法、讲授法、演示操作法教学过程教学内容课堂互动你现在最常用的统计软件是什么?SAS?MATLAB?还是Eviews?如果你是一个经常和数据分析打交道,需要运用或自己编写各种统计方法的人。一、概述1、什么是R语言R是一套完整的数据处理、计算和制图软件系统,R语言是世界上最广泛使用的统计编程语言,它是数据科学家的第一选择。(1)S语言的诞生:S语言是一种用来进行数据探索、统计分析、作图的解释型语言,它于1975年至1976年间由贝尔实验室的RickBecker,JohnChambers和AllanWilks开发出来。第一个可运作的S语言版本在1976年发表,在GCOS操作系统上运作。当时它还没有正式名称,曾经被人称为互动式SCS(InteractiveSCS,ISCS)、统计运算系统(StatisticalComputingSystem)、统计分析系统(StatisticalAnalysisSystem,SAS)。直到1979年,它才被正式定名为S语言。S语言的丰富的数据类型(向量、数组、列表、对象等)特别有利于实现新的统计算法,其交互式运行方式及强大的图形及交互图形功能使得我们可以方便的探索数据。(2)R语言简史:在S语言的基础上,新西兰奥克兰大学的RobertGentleman和RossIhaka及其他志愿人员在S语言的基础上开始构思一种新的用于统计学分析的开源语言,因为他们名字的第一个字母都是R,所以这门语言就被叫做R语言。R是S语言的一个分支,一般人认为R就是S语言的一种实现。我们在上一节了解到,S语言的实现版本主要是S-PLUS,这是一个由MathSoft公司开发的一种基于S语言的统计学软件,而R也是S-Plus的基础,所以它们在程序语法上可以说是几乎一样的,可能只是在函数方面有细微差别,所以两门语言只要稍加修改,就可以非常容易地移植到对方程序中。(3)关于大数据一般认为,大数据(bigdata)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。大数据的核心不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。换而言之,如果把大数据比作一种产业,那么这种产业实现盈利的关键,在于提高对数据的“加工能力”,通过“加工”实现数据的“增值”。关于大数据的价值,主要体现在以下几个方面:①为企业提供基础的数据统计报表分析服务。分析师能够轻易获取数据产出分析报告指导产品和运营,产品经理能够通过统计数据完善产品功能和改善用户体验,运营人员可以通过数据发现运营问题并确定运营的策略和方向,管理层可以通过数据掌握公司业务运营状况,从而进行一些战略决策。②人工智能离不开数据。数据作为人工智能发展的重要基础,在未来的智能化时代也将扮演着重要的角色,所以数据的价值也必然会随着人工智能技术的发展而得到提升。由此可以预测,一家公司如果拥有海量的用户数据,那无异于拥有一个取之不尽的矿山。③未来的大数据除了将更好的解决社会,商业,科学各类问题。大部分的数据都与人类有关,要通过大数据解决人的问题。比如,建立个人的数据中心,将每个人的日常生活习惯,身体状态,社会网络,知识能力,爱好性情,情绪波动记录,这些数据可以被充分的利用,医疗机构将实时的监测用户的身体健康状况,教育机构针对用户制定培训计划,服务行业提供符合用户惯的服务,社交网络为志同道合的人群相识相知,政府能在用户心理健康出现问题时有防范自杀,刑事案件,金融机构能为用户的资金提供更有效的使用建议和规划,道路交通可以提供合适的出行线路。3、R语言在大数据中的应用R语言是专门为数据科学而生的软件,能帮你完成该领域内统计分析和开发与维护等等工作。R语言拥有15000多个成熟稳定的R包,几乎所有类型的数据分析任务都可以在R中完成,但更强大的是它还提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法。R具有一套完整的数据处理、计算和制图软件系统。其功能包括:(1)完整连贯的统计分析工具:R内建多种统计学及数字分析功能,是统计分析、绘图功能的自由开源软件,拥有完整体系的数据分析和挖掘工具,能够有效的数据存储和处理。(2)向量、矩阵运算等强大的数组运算工具:虽然R主要用于统计分析或者开发统计相关的软体,但也有人用作矩阵计算。其分析速度可媲美GNUOctave甚至商业软件MATLAB。(3)优秀的统计制图功能:R具有丰富的数据挖掘工具包(Packages)方便使用。拥有完整体系的数据统计和分析工具,为数据分析和显示提供的强大图形功能。(4)简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。二、R语言社区R语言的在线资源有很多,相信读者朋友在学习的过程中,也能搜集到很多的资源。常见的如菜鸟教程、w3cschool,以及慕课等学习网站上都有很多免费的学习资源。1、R语言手册关于R语言手册,初学者或者英文水平不高的读者,可以借助于各个搜索引擎,搜索中文版的语言手册,这些资料很容易获得。但如果想更深入地学习,还是建议看官方的文档,因为翻译过来的内容,可能会有一些偏差。R语言的官方文档地址是:/,官方文档中提供了R相关的学习手册,点击Manuals即可浏览,建议所有读都去看一看。另外如果有不会的函数,在寻找搜索引擎搜索之后,也可以看R函数在线帮助/,进而获得对某个函数或者包的帮助信息。2、在线资源R语言的在线资源有很多,相信读者朋友在学习的过程中,也能搜集到很多的资源。常见的如菜鸟教程、w3cschool,以及慕课等学习网站上都有很多免费的学习资源:·R-blogger丰富的R博客资源/·R语言资源汇总/qinwf/awesome-R·R语言搜索引擎/·R函数在线帮助/·stackoverflow关于R的问答/questions/tagged/r·一个入门级的R在线教程/·交互式的R在线教程·统计之都/3、R语言联盟2015年7月,Linux基金会今天宣布成立了R语言联盟(RConsortium),这个新组织是Linux基金会用以加强技术和用户交流的合作计划,其宗旨是为R社区、R基金会、团体以及个人使用、维护和分发R软件提供帮助。R语言联盟将与R基金会和其他组织共同工作和并向其提供开发、维护和分销R软件服务,以及为R用户社区提供统一框架。R语言联盟的创始公司和组织包括R基金会、微软、RStudio、谷歌和惠普等。4、用户活动R语言作为统计和数据挖掘界广泛应用的工具,每年R的官方机构都会举办多场R语言的学术会议,各个国家及地区也定期有R用户的交流活动。在中国的北京、上海、杭州、广州等地,每年都会有多场R语言会议,会议内容覆盖数据科学在各行各业的应用,包括天文、地理、医疗、生物、金融、能源、互联网等领域,在高校和业界均形成了深远影响,促进了R语言乃至数据科学在中国的推广和发展。如今R语言会议成为了R语言社区在国内影响力最大的交流盛会,聚学术专家、业界精英、技术大咖于一堂,让更多的数据人参与其中,促进社区内部的交流和进步。三、集成开发环境1、RGUI以WindowsX64系统为例子,安装RGUI,安装包R的官方网站是:/,打开后,如图1-1所示,首页中选择自己对应的电脑合适的版本,此处请点击“DownloadRforWindows”。同时我们注意到,当前最新的R版本是R-4.0.2,如果想了解最新版本的详细信息,请点击“what'snew”查看。此时选择自己对应的电脑合适的版本。本节中,我们以Windows系统为例子,所以请点击“DownloadRforWindows”,进入下一界面:点击“installRthefirsttime”,进入新的界面:点击“DownloadR4.0.2forWindows(84megabytes,32/64bit)”,弹出对话框中,点击“保存文件”,然后等几分钟,下载完成。打开下载所在位置的“R-4.0.2-win.exe”。如打开时候出现问题,可以尝试点击鼠标右键,以管理员身份运行。选择语言对话框中,建议使用“中文(简体)”。选择语言后,点击确定,在后边的安装向导对话框中,点击下一步,当需要选择安装的路径时,建议放置在D盘,比如,此处笔者将其装至“D:\ProgramFiles(x86)\R-4.0.2”,接着点击右下角的“下一步”2、RStudioIDERStudio是R语言的集成开发环境,是一款R语言的IDE,分为面向桌面用户IDE和LinuxR服务器版编辑器两种编辑器,采用AGPLv3与RStudioLicenseAgreement双协议授权。R是RStudio的基础,必须先安装R,再安装RStudio。即使只使用RStudio,还是需要事先为计算机安装好R。RStudio只是辅助你使用R进行编辑的工具,因为它自身并不附带R程序。3、JupyterNotebook学过Python的同学,应该接触或使用过JupyterNotebook,Notebook是一个交互式笔记本,支持运行40多种编程语言。按照Jupyter创始人的说法,起初他是想做一个综合Ju(Julia)、Py(Python)和R三种科学运行语言的计算工具平台,所以将其命名为Jupyter。它里面可以内置很多编程语言kernel(内核),默认的内核是Python,所以,当你安装了Notebook后,就可以直接跑Python代码。Jupyter发展到现在,已经成为了一个几乎支持所有语言,能够把软件代码、计算输出、解释文档、多媒体资源整合在一起的多功能科学运行平台。但当前还不支持创建R语言项目。4、R语言的开发R语言的学习同样遵循二八定律,即百分之八十的精力需要花费在软件之外的统计学理论背景、业务知识,而需要使用R软件来实现的部分,需要明确的是,统计学的理论背景更加重要,如果理论搞透了,那么很多事情就会水到渠成,迎刃而解了。这一点特别体现在对于统计与数据分析的学习上。R包是R的精髓。2006年03月15日,第一个R包(coxrobust)正式上线CRAN,近年来,R包出现了井喷的趋势。目前已经有超过20000+个R包,而且每天都在增长,每一个R包都有各自的功能,R的强大,正是因为这些程序包。对于这两个方向而言,统计计算的学习,基础都在课堂理论与专业背景上,R语言只是提供了一个实现的平台而已,它并不该改变或者创造新的理论、模型。课堂导入理论讲授理论讲授实验内容在计算机上安装R软件,加载所需的数据包,R语言窗口中各类菜单的内容。教学小结任务二R语言基础知识授课章节第2章R语言基础授课教师开课范围授课时间授课班级授课类型课时2课时(含考核评价)教学目标(1)掌握R语言变量的生成和删除(2)掌握数字型、字符型、逻辑型向量的生成和处理(3)掌握R的几种封装形式并能够对齐进行索引(4)能独立获取和设定工作目录,保存工作空间,查看历史命令记录(5)能使用R包中的函数及R的内置数据集,进行脚本思政目标(1)提升思考、判断、推理以及逻辑思维能力(2)引导开拓进取精神教学重点(1)R语言的变量(2)R语言的向量(3)R语言函数教学难点(1)R语言变量的生成和删除(2)数字型、字符型、逻辑型向量的生成和处理(3)R包中的函数及R的内置数据集教学方法任务驱动法、讲授法、演示操作法教学过程教学内容课堂互动1995年由新西兰Auckland大学统计系的RobertGentleman和RossIhaka,编写了一种能执行S语言的软件,并将该软件的源代码全部公开,这就是R软件,其命令统称为R语言。一、变量R软件采用“计算器”模式,方便快捷,但有时需要定义变量并保存变量值,以便重复使用。在R软件中,不需要进行变量声明或者显示地创建变量,只需要将值赋予一个名称,R软件就会自动生成该名称的变量。1、变量赋值:赋值操作由一个小于号(<)和减号(-)构成,两个符号之间没有空格。R语言是动态输入语言,可随意改变变量的数据类型。例如,先给x赋值一个数值型数值,然后再对其赋值一个字符串,在这一过程中R软件能够理解用户的意图:>x<-4>x[1]4>x<-"hello">x[1]"hello"2、删除赋值:当希望删除工作空间中不需要的变量和函数时候,使用rm函数。例如:>x<-3*pi>x[1]9.424778>rm(x)>x错误:找不到对象'x'二、数据类型R可以识别六种基本类型的向量。分别是:数值型或双整型(double)、整型(integer)、字符型(character)、逻辑型(logical)、复数型(complex)以及原始类型(raw),日期型等。1、数值型:数值型数据又称为双整型(double)。数值可正可负,可包含小数也可以不包含。在R中键入的任何一个数值都会默认以double型存储,并且可以使用typeof函数查看向量是什么类型的。例如:>chengji<-c(69.5,75,99.5,88)>chengji[1]69.575.099.588.0>typeof(chengji)[1]"double"整型向量用来存储整型(integer)的数据,也就是数据不需要小数部分。在R中,明确设定整型的方法是在该数值之后加上大写的L。如下所示:>int<-c(1L,2L,5L)>int[1]125>typeof(int)[1]"integer"2、字符型在R中,字符要加双引号,再组合起来构成一个字符型向量。字符型向量中的单个元素称为字符串(string)。字符串不仅可以包含英文字母,也可以由数字或者符号组成。在R中,任何加双引号的对象都会被当作字符串,无论引号内是什么元素。如下所示:>text<-c("Hello","World")>text[1]"Hello""World">typeof(text)[1]"character"3、逻辑型逻辑型向量用来存储TRUE和FALSE,这是R中布尔数据的存储类型。在比较数据时,其结果就是逻辑型数据。>3>4[1]FALSE>3<4[1]TRUE在R中输入TRUE或者FALSE,就会被当作逻辑型数据。R也会默认把T和F分别当作TRUE和FAlSE的简写。>logic<-c(TRUE,FALSE,T,F)>logic[1]TRUEFALSETRUEFALSE>typeof(logic)[1]"logical"4、复数类型和原始类型R还可以识别另外两种类型的原子型向量:复数类型和原始类型。复数类型向量用来存储复数。要生成一个复数类型向量,只需要将某个数字与带i的虚数项相加即可。>comp<-c(1+1i,1+2i,1+3i)>comp[1]1+1i1+2i1+3i>typeof(comp)[1]"complex"原始类型向量用来存储数据的原始字节。原始类型向量的生成较为复杂,但是如果要生成一个长度为n的空原始类型向量,可以用raw(n)。>raw(4)[1]00000000>typeof(raw(4))[1]"raw"5、日期和时间运行Sys.data()可以得到当前的日期。Date类:存储了从1970年1月1日以来来时计算的天数,更早的日期表示为负数,也就是说,Date类型是一个整数。运行Sys.time()可以得到计算机的当前时间,虽然显示出来的信息是一串字符,但它的类型时double型。它的类是POSIXct和POSIxtPOSIxt。POSIXct类记录了以时间标准时间时区(UTC)为准的,从1970年1月1日开始时的秒数,即POSIXct类型是整数。POSIXt把日期和时间存储为一个列表,其中包括秒,分,时和月份等,POSIXlt是使用列表来表示日期和时间。三、向量1、使用c()生成向量向量不仅是R的一种数据结构,它还是R软件的重要组成部分。向量中可以包含数值、字符串逻辑值,但不能由多种格式混合组成。通过c函数添加元素构成向量,如下所示:>c(1,2,3,5,8,9)[1]123589>c("Hello","world","!")[1]"Hello""world""!">c(TRUE,FALSE,TRUE)[1]TRUEFALSETRUE如果这多个向量的数据类型不同,那么R软件对于混合型向量会进行如下的数据类型的转换:>v1<-c(1,3,5)>v2<-c(2,4,6)>c(v1,v2)[1]135246>v3<-c(TRUE,FALSE,TRUE)>v4<-c("Hello","world","!")>c(v1,v2)[1]135246>c(v1,v3)[1]135101>c(v1,v4)[1]"1""3""5""Hello"[5]"world""!">c(v3,v4)[1]"TRUE""FALSE""TRUE""Hello""world""!"2、生成序列向量(1)使用表达式n:m生成n,n+1,n+2,…,m的一个向量>f<-1:9>f[1]123456789>f2<-9:1>f2[1]987654321>f3<-c(2:8)>f3[1]2345678(2)通过seq(from=,to=,by=)函数生成向量seq函数通过第三个参数来规定数列元素的增量:>f4<-seq(from=0,to=10)>f4[1]012345678910>f5<-seq(from=1,to=9,by=3)>f5[1]147(3)通过rep函数生成重复某个值得数列>rep(2,3)[1]2223、向量比较运算通过比较运算符(==、!=、<、>、<=、>=)对两个向量中的每个元素进行比较,返回结果是每个元素间比较结果的逻辑值向量。比较运算符可以比较两个值,并根据结果返回TRUE或FALSE。>a<-3>b<-4>a<b[1]TRUE>a==b[1]FALSE还可以对两个向量进行比较运算,会将两个向量中没两个对应的元素进行比较。并以逻辑值向量方式返回比较结果。如下所示:>a<-c(3,6,10)>b<-c(7,4,8)>a==b[1]FALSEFALSEFALSE>a>b[1]FALSETRUETRUE4、向量的数学运算基本的数学运算符可以对向量中的元素进行逐个计算,并以向量的形式输出结果。所有的基本数学运算符都能应用于向量对中。这些数学运算符对两个向量中相应的每个元素对进行计算。>v<-c(11,12,13,14,15)>w<-c(1,2,3,4,5)>v+w[1]1214161820>v-w[1]1010101010>v*w[1]1124395675>v/w[1]11.0000006.0000004.3333333.5000003.000000>w^v[1]140961594323268435456305175781255、选取向量中的元素从向量中选取一个或多个元素的基本方法是根据元素在向量中的位置使用方括号来选出元素,如a[2]代表了a向量中的第二个元素。注意的是,向量第一个元素的位置索引值为1,不是其他编程语言的0。>ff<-c(1,2,3,5,8)>ff[1][1]1>ff[4][1]5选择一个向量中的多个元素,向量的索引本身也可以是一个向量,并根据下标向量中所指定的位置选择向量中的元素。>ff[1:3][1]123>ff[c(1,3,5)][1]138负索引是去掉向量中相应索引的元素。例如,下标为-1,那就选择除了第一个元素外的所有其他元素。>ff[-2][1]1358还可以使用逻辑向量从数据中选择元素。与索引逻辑向量取值为TRUE的元素对应的原始数据向量的元素将被选择。如下所:>ff<4[1]TRUETRUETRUEFALSEFALSE>ff[ff<4][1]123>ff%%2==0[1]FALSETRUEFALSEFALSETRUE>ff[ff%%2==0][1]286、因子因子在R中用来存储分类信息,举个例子,从性别上,可以把人分为:男人和女人,从年龄上划分,又可以把人分为:未成年人(<18岁),成年人(>=18)。R把表示分类的数据称为因子,因子的行为有时像字符串,有时像整数。因子是一个向量,通常情况下,每个元素都是字符类型,也有其他数据类型的元素。因子具有因子水平(Levels),用于限制因子的元素的取值范围,R强制:因子水平是字符类型,因子的元素只能从因子水平中取值,这意味着,因子的每个元素要么是因子水平中的字符(或转换为其他数据类型),要么是缺失值,这是因子的约束,是语法上的规则。(1)创建因子factor()函数创建因子,factor()函数的第一个参数必须是字符向量,通过levels参数显式设置因子水平,factor(x=character(),levels,labels=levels,exclude=NA,ordered=is.ordered(x),nmax=NA)例如:因子sex的值是向量c('f','m','f','f','m'),因子水平是c('f','m'):>sex<-factor(c('f','m','f','f','f'),levels=c('f','m'))>sex[1]fmfffLevels:fm(2)查看因子水平因子水平,可以通过函数levels(factor)来查看:>levels(sex)[1]"f""m"水平的级数,相当于level的长度,可以由nlevels函数查询到:>nlevels(sex)[1]2(3)因子水平的标签使用factor函数创建因子,可以使用labels参数为每个因子水平添加标签,labels参数的字符顺序,要和levels参数的字符顺序保持一致(4)有序因子通常情况下,因子一般是无序的,这可以通过is.ordered()函数来验证:>is.ordered(sex)[1]FALSE四、函数函数的使用时,需要把函数名后的括号中输入相应的数据即可。传递到函数中的数据称为该函数的参数,可以有多个参数,参数之前用逗号隔开。参数可以是原始数据,R对象甚至是另一个R函数的返回结果。如果存在函数嵌套时,R将从最内层的运算开始解析,直到最外层的运算为止。我们需要掌握以下R常用的函数。sum()#求和>a<-c(1,2,3,4,5)>sum(a)15mean()#求均值>mean(a)[1]3sort()#正排序>sort(a)[1]12345sort(a,decreasing=TRUE)#逆序>sort(a,decreasing=TRUE)[1]54321rev()#求相反顺序>rev(a)[1]54321round()#四舍五入>a<-c(2.2,3.5,3.6,5.1)>round(a)[1]2445另外当你使用函数时,需要知道调用哪个参数,假如使用了一个该函数不能识别的参数名,那么就会得到一条错误的输出信息。对于一个函数,如果不能确定应该如何设置其中的参数,可以使用args函数查看这个函数的所有参数名。具体来说,只要将函数的名称放在args函数的括号中即可。>args(round)function(x,digits=0)NULL在调用一个包含多个参数的函数时,应该写出每个参数的名称。这样有助于理解代码,再者如果没有写出参数名称,那么R会按顺序将你的值与函数中的参数匹配,那么你所使用的顺序很可能与R的顺序不一致。这可能会导致值被传递给错误的参数。如果详细地写了参数名称可以防止这样的情况发生。R会自动将跟与其参数名相匹配,而无论参数的顺序怎样。五、函数文档R函数很多,且每个函数的功能也很多,如果我们要详细的了解函数的全部功能,可以使用help命令查询函数的帮助文档;用args函数快速获取函数的参数;用example函数查看函数的使用示例。例如,想了解mean函数的全部功能,使用help命令查询该函数。或者以简写的形式在函数名前面添加“?”即可。>help(mean)>?mean该命令可打开函数的帮助文档,或者将函数的解释直接显示在控制台中。R软件的函数帮助文档在最后一般给出具体的使用例子。R的一个很诱人的特性是,可以使用example命令查看函数例子的具体执行,它可以演示该函数的功能。>example(mean)mean>x<-c(0:10,50)mean>xm<-mean(x)mean>c(xm,mean(x,trim=0.10))[1]8.755.50六、缺失数据1、缺失数据在统计数据集,缺失值在R中表示为NA,而NULL代表不存在的值,而不是存在但未知的值。在R的很多统计函数中,我们要求函数跳过缺失值NA。如下例所示:>x<-c(35,NA,33,187,15)>x[1]35NA3318715>mean(x)[1]NA>mean(x,na.rm=T)[1]67.5>x<-c(35,NULL,33,187,15)>mean(x)[1]67.5下面几个NA值的模式都不一样:>x<-c(3,NA,24)>mode(x[1])[1]"numeric">mode(x[2])[1]"numeric">y<-c("ac",NA,"bd")>mode(y[1])[1]"character">mode(y[2])[1]"character"2、NULLNULL的一个用法是在循环中创建向量,其中每次迭代都在这个向量上增加一个元素。下例是建立一个偶数向量。>x<-NULL>for(iin1:10)if(i%%2==0)x<-c(x,i)>x[1]246810如果我们在上面的例题中使用NA而不是NULL,则会得到多余的NA。>x<-NA>for(iin1:10)if(i%%2==0)x<-c(x,i)>x[1]NA246810NULL值被作为不存在而计数,并且没有模式。>x<-NULL>length(x)[1]0>y<-NA>length(y)[1]1新课导入理论讲授理论讲授实验内容1.R语言变量的生成和处理2.熟练掌握数字型、字符型、逻辑型向量的生成和处理。对R的几种封装形式熟练掌握,并能够对其进行索引3.了解如何获取和设定环境变量教学小结任务三R语言变量的类型及相关操作授课章节第3章单模式数据结构授课教师开课范围授课时间授课班级授课类型课时4课时(含考核评价)教学目标(1)掌握获取向量长度的方法,(2)掌握循环补齐与索引向量(3)掌握创建与索引矩阵的方法与矩阵属性(4)掌握创建数组的方法思政目标(1)培养细节观察能力(2)强化遵守规范的意识教学重点(1)R语言向量(2)R语言矩阵(3)R语言数组教学难点(1)R语言数组(2)单模式数据对象之间的关系教学方法任务驱动法、演示操作法教学过程教学内容课堂互动在R语言中,单模式数据结构是指仅存储单一数据类型(如纯数值、纯字符、纯逻辑值)的基础数据结构,是数据处理与分析的“基石”。这类结构不支持混合数据类型(如同一结构中同时包含数值和字符),其设计初衷是保证数据存储的一致性和运算的高效性,广泛应用于统计计算、数据清洗、可视化等场景。一、向量1、获取向量长度使用函数length()获取向量的长度。尤其是在写一般函数的代码时,经常需要知道向量参数的长度。>x<-c(1,5,7)>length(x)[1]32、循环补齐在对两个向量使用运算符时,如果要求这两个向量具有相同的长度,R会自动循环补齐,即重复较短的向量,直到它与另一个向量长度相匹配。例子中较短的向量被循环补齐,因此运算其实是像下面执行的c(1,3,5,1,3)+c(6,0,9,23,44)。>c(1,3,5)+c(6,0,9,23,44)[1]73142447Warningmessage:Inc(1,3,5)+c(6,0,9,23,44):长的对象长度不是短的对象长度的整倍数3、索引向量(1)逻辑的向量在这种情况下索引向量必须与从中选取元素的向量具有相同的长度。在索引向量中返回值是TRUE的元素所对应的元素将被选出,返回为FALSE的值所对应的元素将被忽略。例如:>x<-c(2,NA,3)>y<-x[!is.na(x)]>y[1]23创建了一个名为y的对象,对象中包含x中的非缺失值,同时保持顺序。如果x中包含缺失值,y的长度将小于x。(2)正整数的向量这种情况下索引向量中的值必须在集合{1,2,...,length(x)}中,在返回的向量中包含索引向量中指定元素,并且在结果中按照索引向量中的顺序排列。索引向量的长度可以是任意,返回的向量与索引向量由相同的长度。例如,x[3]是x的第3个元素。>x<-c(2,4,6,8)>x[c(1,3)][1]26>x[2:3][1]46(3)负整数的向量这种索引向量的作用是把某些值去掉。例如>y<-x[-(1:5)]向量y取得了前5个元素以外的值。(4)字符串的向量这种可能型只存在于拥有names属性并由它来区分向量中元素的向量。这种情况下一个由名称组成的子向量起到了和正整数的索引向量相同的效果。>fruit<-c(5,10,1,20)>names(fruit)<-c("orange","banana","apple","peach")>lunch<-fruit[c("apple","orange")]二、矩阵1、创建矩阵矩阵的行和列的下标都是从1开始,矩阵在R中是按列存储的,也就是说先存储第一列,再存储第二列,以此类推。创建矩阵的方法之一就是使用matrix()函数:>x<-matrix(c(1,2,3,4,5,6),nrow=2,ncol=3)>x[,1][,2][,3][1,]135[2,]246另外一种创建矩阵的方法是为矩阵的每一个元素赋值:先声明一个矩阵,并且给出行数和列数,然后再为矩阵的每一个元素赋值。如下例所示:>y<-matrix(nrow=2,ncol=3)>y[1,1]<-1>y[2,1]<-2>y[1,2]<-3>y[2,2]<-4>y[1,3]<-5>y[2,3]<-6>y[,1][,2][,3][1,]135[2,]2462、矩阵属性(1)矩阵运算矩阵A的转置:t(A)。矩阵A的求逆:solve(A)。矩阵A与矩阵B相乘:A%*%B。A*B是逐个元素的乘法运算,然而A%*%B是矩阵乘法。所有这些函数返回一个矩阵。一个n阶对角(单位)矩阵:diag(n)。(2)给矩阵的行和列赋名字在R中我们可以把名称赋值给一个矩阵的行和列,这可以增强矩阵的可读性。每个矩阵都有一个rownames属性和一个colnames属性。把字符串向量赋值给矩阵的相应属性的语法:>rownames(mat)<-c(“rowname”,“rowname”,...“rowname”)>colnames(mat)<-c(“colname”,“colname”,...“colname”)给矩阵x的行和列赋名字,如下所示:>colnames(x)<-c("num","name","score")>rownames(x)<-c("zhangsan","lisi")>xnumnamescorezhangsan135lisi2463、索引向量的运算方法也同样适用于矩阵。例如:>y[,1][,2][,3][1,]135[2,]246>y[,2:3][,1][,2][1,]35[2,]46这里提取了矩阵y中第2、3列的所有元素组成了一个子矩阵。>y[1,][1]135上面的例子提取了矩阵y的一行。三、数组1、创建数组(1)设置dim属性生成数组将向量转换成一个n维数组,方法是用dim函数将相应的维度属性赋给该向量。具体来说,就是把这个向量的dim属性设置为n。R会将该向量中的元素重新排列到n维。每一个维度上可以包含的行数。例如,可以将向量m重新组织成一个数组。>m<-c(1:20)>m[1]123456789101112131415161718[19]1920>dim(m)<-c(2,2,5)(2)array()函数生成数组array()函数用来生成一个n维数组。比如说,可以利用array函数将数值排列到一个三维立方体空间中,或者一个四维、五维或n维的超立方体空间中。在R语言中,数组使用array()函数创建。array()函数的语法格式如下所示:array(data=NA,dim=length(data),dimnames=NULL)其中:data为创建数组的元素;dim为数组的维数,是数值型向量;dimnames是各维度中名称标签列表。举例说明:arr1<-array(1:10)#相当于1维的向量:12345678910。arr2<-array(1:10,dim=c(2,5))#相当于2行5列的矩阵。arr3<-array(1:24,dim=c(3,4,2))#创建了一个3×4×2维的数组。2、数组的属性在创建数组时可以给数组的每一维的每个水平取名字:>dim1<-c("A1","A2","A3")>dim2<-c("B1","B2","B3")>dim3<-c("C1","C2")>arr4<-array(1:18,dim=c(3,3,2),dimnames=list(dim1,dim2,dim3))3、索引数组数组的元素可以透过中括号指定下标来存取,各个下标用逗点隔开。例如:下面举几个例子进行说明:5arr4[2,3,1]#获取单个元素的值:8。arr4[2,1,]#获取第1个维度的第2个水平和第2个维度的第1个水平的所有元素值。arr4[2,,]#获取第1个维度的第2个水平的所有组合元素值。arr4[,2,]#获取第2个维度第2个水平的所有组合元素值。arr4["A2","B3","C2"]#通过水平名称的组合来获取元素值。修改数组中元素的值arr4[2,3,1]<-18arr4[2,3,]<-c(110,111)除此之外,也可以利用索引向量取得指定的子数组:1arr<-array(1:25,c(5,5))2subarr<-arr[1:3,2:4]若是不指定下标,则R会选取对应下标的所有元素,例如:1arr<-array(1:25,c(5,5))2subarr2<-arr[1:3,]子数组subarr2为[,1][,2][,3][,4][,5][1,]16111621[2,]27121722[3,]38131823若所有下标都不指定arr[,,]则表示整个数组,这与忽略下标直接使用arr效果是一样的。如果一个多维数组只给了一个下标或索引向量,在这种情况下,R会把数组当作向量来使用,而忽略维度属性。1arr<-array(1:8,c(2,4))2arr[3]<-10数组也可以使用索引数组的方式存取任意不规则元素集合,这种方式我们直接使用范例来说明比较清楚,首先假设我们有一个4×5的二维数组:x<-array(1:20,dim=c(4,5))x为[,1][,2][,3][,4][,5][1,]1591317[2,]26101418[3,]37111519[4,]48121620我们可以使用索引数组的方式将x[1,3]、x[2,2]与x[3,1]取出来构成一组新的向量,首先产生一个索引数组i:i<-array(c(1:3,3:1),dim=c(3,2))数组i为[,1][,2][1,]13[2,]22[3,]31四、单模式数据对象之间的关系矩阵是一种特殊的向量,包含两个附加的属性:行数和列数。数组是R里更一般的对象,矩阵是数组的一个特殊情形。数组可以是多维的。例如一个三维数组可以包含行、列和层,而矩阵只有行和列两个维度。向量、矩阵和数组都只能存储单一类型的数据,当数据中存在大量的数值时,计算任务就会更加简单。这是因为,R知道这些数据对象里只有一种数据类型,因此在数据操作时更加直接和高效。向量、矩阵和数组的数据在内存中存储方式比较简单,因此对它们的数据操作也更快。新课导入理论讲授思政元素理论讲授上机训练思考题向量、矩阵、数组均为单模式数据结构,且存在“维度关联”(1维向量→2维矩阵→n维数组)。请用代码实现:将1维向量
vec<-1:12
分别转为3行4列的矩阵(按行填充)和2行3列2层的数组,并说明转换过程中“数据类型”和“元素总数”需满足的前提条件。教学小结任务三R语言变量的类型及相关操作授课章节第4章多模式数据结构授课教师开课范围授课时间授课班级授课类型课时4课时(含考核评价)教学目标(1)掌握R语言中的多模式结构(2)掌握R语言中列表的概念、创建方法、属性、索引、引用、添加、修改(3)掌握R语言中数据框的创建方法、引用、修改、合并思政目标(1)提高开拓学术视野的能力(2)培养创新意识教学重点(1)R语言列表(2)R语言数据框教学难点(1)R语言列表的创建与运用(2)R语言数据框的创建与运用教学方法任务驱动法、演示操作法教学过程教学内容课堂互动在R语言中,多模式数据结构(也称为混合模式数据结构)是指能够同时存储多种不同类型数据(如数值、字符、逻辑值等)的复合结构。这类结构突破了单模式结构的类型限制,更贴近现实世界中复杂数据的组织形式,是数据框分析、统计建模等高级应用的核心载体。一、多模式结构在向量,矩阵和数组的数据元素都是同类型因此是单模式结构。多模式结构与单模式结构不同,数据元素可以是多个数据类型。列表和数据框都属于多模式数据结构。列表是一种特殊的对象集合,跟数组一样,他的元素也有序号确定,但是不同点在于可以存在不同类型的元素。数据框是R中的一个数据结构,他通常是矩阵形式的数据,但矩阵各列可以是不同类型的,数据框每列是一个变量,每行是一个观测值。二、列表1、列表概念R语言中的列表与R语言中的向量、数组和矩阵不同,它的每个分量的数据类型可以是不同的。列表是对象的集合,可以包含向量、矩阵、数组,数据框,甚至是另外一个列表,且在列表中要求每一个成分都要有一个名称。列表中的对象又称为它的分量(components)。2、创建列表在R语言中可以使用list()函数来创建列表,其语法格式为:list(name_1=object_1,name_2=object_2,...name_m=object_m)这将创建一个包含m个组件的列表,并根据参数中指定的名称为其命名。如果它们的名称被省略,组件将只是编号。以一个雇员数据库作为一个例子。对于每个雇员,我们存储其名称姓名、工资以及一个布尔变量,表示是否工会成员。这三个变量是不同的数据类型:字符型、数值、逻辑值,因此使用列表。整个数据库可以是一个由列表组成的列表。创建一个列表来表示某个职员,如下:>zs<-list(name="zhangsan",salary=10000,union=F)>zs$name[1]"zhangsan"$salary[1]10000$union[1]FALSE3、创建有元素名的列表R语言中各组件的元素名称叫做标签,比如上面代码中的name。实际上标签是可选的,也可以不指定。上面的代码也可以这样写:>zs<-list("zhangsan",10000,F)>zs[[1]][1]"zhangsan"[[2]][1]10000[[3]][1]FALSE4、列表属性由于列表实质上也是向量,可以使用length()得到列表的组件个数。>length(zs)[1]35、索引列表访问列表的组件有多种方法:可以像在向量中一样,使用双重中括号。因此共有三种方法访问列表lst的组件c。语法如下:lst$clst[[“c”]]Lst[[i]],i是c在lst中的数字编号6、索引列表的子集使用单中括号和双重中括号都可以提取列表的元素。但是与普通向量索引不同,单中括号返回的是一个新的列表,它是原来列表的子集。例如:>zs[1:2]$name[1]"zhangsan"$salary[1]10000>zs2<-zs[2]>zs2$salary[1]10000>class(zs2)[1]"list"7、引用列表的元素通过双重中括号[[]]可以引用列表的元素,返回的也是元素本身的类型,而不是列表。如下列所示:>zs3<-zs[[2]]>zs3[1]10000>class(zs3)[1]"numeric"8、添加列表分量列表创建后添加新的列表分量的方法如下:>zs<-c(zs,age=list(c(28)))>zs$name[1]"zhangsan"$salary[1]20000$union[1]FALSE$age[1]289、修改列表元素修改列表的某一分量的元素的值的方法如下:>zs[[2]]=20000>zs$name[1]"zhangsan"$salary[1]20000$union[1]FALSE三、数据框1、创建数据框在R语言中,数据框使用data.frame()函数来创建,其格式如下:data.frame(col1,col2,...,=NULL,check.rows=FALSE,s=TRUE,stringsAsFactors=default.stringsAsFactors())其中,用于指定各行(样本)的名称,默认没有名称,使用从1开始自增的序列来标识每一行;check.rows用于用来检查行的名称和数量是否一致,默认为FALSE;s来检查变量(列)的名称是否唯一且符合语法,默认为TRUE;stringsAsFactors用来描述是否将字符型向量自动转换为因子,默认转换,若不改变的话使用stringsAsFactors=FALSE来指定即可。>d1<-data.frame(name=c("zs","ls","ww"),sex=c("男","女","男"),score=c(90,85,76))>d1namesexscore1zs男902ls女853ww男76设定的例子。如下所示>>raw(4)[1]00000000>typeof(raw(4))[1]"raw"namesexscores1zs男90s2ls女85s3ww男76使用向量定义数据框>name<-c("zs","ls","ww")>sex<-c("男","女","男")>score<-c(90,85,76)>d3<-data.frame(name,sex,score)>d3namesexscore1zs男902ls女853ww男762、数据框的引用各种矩阵操作也可以应用到数据框对象。通过数据框的索引值来访问数据框的分量以及数据元素。主要通过双重中括号来引用。(1)查看列数据>d3["score"]#仍是一个数据框,也是一个列表score190285376>d3[,"score"]#返回的是向量[1]908576>d3[3][1]908576>d3[c(1,3)]#返回第1列和第3列的数据namescore1zs902ls853ww76(2)查看行数据>d3[c(1),]#返回第1行的数据namesexscore1zs男90>d3[c(1,3),]#返回第1行和第3行的数据namesexscore1zs男903ww男76>d3[c(1,3),c(2,3)]#返回第1行和第3行与第2列和第3列交叉处的数据sexscore1男903男76(3)查看数据的元素>d3[["name"]]#以因子的形式返回那么列[1]"zs""ls""ww">d3[["name"]][1]#返回name分量第一个元素值[1]"zs">d3[[1]][1]#返回第1分量第一个元素[1]"zs">d3$name[1]#返回name分量第一个元素值[1]"zs"3、数据框的修改(1)增加样本数据或变量可以使用rbind()函数和cbind()函数将新行或新列添加到数据框变量中。lst1<-list(name="马宇",sex="男",score=92)#创建一个新列表df1<-rbind(d3,as.data.frame(lst1))#将列表lst1添加到df1中lst2<-list(height=c(170,178,185,190,178,175))#创建一个新列表,保存身高df1<-cbind(d3,lst2)#使用cbind将lst2添加到df1中>df1namesexscoreheight1zs男901702ls女851783ww男761854zs男901905ls女851786ww男76175(2)修改某列的一个值df1$name[1]<-"wh"#将王宏的值修改为王宏伟df1[1,2]<-"女"#将第一行第2列的值修改为“女”>df1namesexscoreheight1wh女901702ml女851783ww男761854zs男901905ls女851786ww男761751[[1]][2]<-"ml"#将第一列第二个值改为“马兰兰”(3)删除行或者列①删除行df1<-df1[-2,]#删除第2行数据>df1namesexscoreheight1wh女901703ww男761854zs男901905ls女851786ww男76175②删除列df1<-df1[,-3]#删除第3列的数据>df1namesexheight1wh女1703ww男1854zs男1905ls女1786ww男175③删除连续行df1<-df1[-c(1,3),]#删除第1行和第3行的数据>df1namesexheight3ww男1855ls女1786ww男175④删除连续列df1<-df1[,-c(1,4)]#删除第1列和第4列的数据>df1sexheight3男1855女1786男1754、合并数据框在关系型数据库里,最重要的一个操作是合并:两张表根据其中一个共同变量的值组合到一起。在R语言里两个数据框也可以用merge()函数合并在一起。最简单的形式如下:merge(x,y),其中数据框x和y都有一个或多个同名的列。举例如下所示:>d1namesexscore11zs男902ls女853ww男76>d2namesexscore21zs男852ls女803ww男76>merge(d1,d2)namesexscore1score21ls女85802ww男76763zs男9085这两个数据框都有变量name。R在两个数据框里查找name变量值相同的行,在用查找到的行和两个数据框里所有列,然后创建新的数据框。merge()有两个参数by.x和by.y,用于标出两个数据框里含有相同信息但名称不同的两个变量。举例如下:>d1xingmingsexscore11zs男902ls女853ww男76>d2namesexscore21zs男852ls女803ww男76>merge(d1,d2,by.x="xingming",by.y="name")xingmingsex.xscore1sex.yscore21ls女85女802ww男76男763zs男90男85虽然在两个数据框里,两个变量一个是xingming一个名为name,但这连个变量包含相同的信息。新课导入理论讲授实验内容对向量添加数据,向量分组,选择矩阵中某一行(列),基本数据类型之间的转换,讲函数应用于每行。教学小结任务四IO操作:输入与输出授课章节第5章基本数据管理授课教师开课范围授课时间授课班级授课类型课时4课时教学目标(1)熟悉数据管理基本概念(2)掌握创建新变量的方法(3)掌握变量的重编码与重命名(4)掌握变量的缺失值与类型转换(5)掌握数据集的合并与取子集(6)使用SQL语句操作数据框思政目标(1)提升团队协作能力(2)培养爱岗敬业意识教学重点(1)数据管理基本概念(2)创建新变量(3)变量(4)数据集(5)SQL语句操作数据框教学难点数据集的合并与取子集教学方法任务驱动法、演示操作法教学过程教学内容课堂互动数据管理是数据分析的基础,涉及数据的创建、查看、筛选、转换和整合等操作。在R语言中,高效的数据管理能够显著提升后续分析的效率。以下将系统介绍R语言基础数据管理的核心技能,涵盖单模式与多模式数据结构的常见操作。一、数据管理基本概念收集到的数据往往存在各种问题,比如数据不完整或者数据缺失。数据集中可能会有几十个甚至数百个变量,但是我们只对其中的一些感兴趣。为了简化问题,往往只创建包含那些感兴趣变量的数据集。将某些类型的变量重编码为其他类型的变量等等。这些都是应该在基本数据处理时期就做好的清理和转换工作。基本数据管理的相关问题大致上有以下几个:变量;缺失值、类型转换;数据排序;数据集的合并;数据集取子集;使用SQL语句操作数据框等等。二、创建新变量在研究项目中,可能需要创建新变量,即在现有数据框中加上感兴趣的量,或者对现有变量进行变换。创建新变量的语句格式如下:变量名<-表达式创建新变量的方法如下:方法一>mytest<-data.frame(a1=c(1,2,3),a2=c(4,5,6))>mytest$sum<-mytest$a1+mytest$a2>mytest$mean<-(mytest$a1+mytest$a2)/2>mytesta1a2summean11452.522573.533694.5这种方法每次都要使用mytest$这种形式,来告诉R是哪个数据集。方法二>mytest<-data.frame(a1=c(1,2,3),a2=c(4,5,6))>mytest<-transform(mytest,sum=a1+a2,mean=(a1+a2)/2)>mytesta1a2summean11452.522573.533694.5transform()函数的第一个参数是需要转换的函数,接下来的参数就是需要新构建的变量和变量的值。这样就成功的避免了每次都要写数据集的名字。方法三>attach(mytest)>mytest$sum<-a1+a2>mytest$mean<-(a1+a2)/2>detach(mytest)>mytesta1a2summean11452.522573.533694.5在R中为了避免反复写数据集的名字,也可以使用attach函数。三、变量的重编码重编码是根据同一个变量或者其他变量的现有值创建新值的过程。比如:根据某些变量的基本情况来对这些观测值进行分组,将误编码的值替换成正确值,基于一组百分制的分数创建一个五级制表示的变量。重编码数据,可以使用R中的逻辑运算符。逻辑运算符表达式可返回true或false将student数据集中分数不在0-100范围内的分数重编码为NA>studentidnamescore11张三6922李四2033王五7544赵六-65>student$score[student$score<0|student$score>100]<-NA>studentidnamescore11张三6922李四2033王五7544赵六NA将student数据集中的学生的成绩重编码为类别型变量scorecat(“及格”,”不及格”)>student$scorecat[student$score>=60]<-"及格">student$scorecat[student$score<60]<-"不及格">studentidnamescorescorecat11张三69及格22李四20不及格33王五75及格44赵六NA不及格四、变量的重命名如果变量名称输入有误,或者对原来的变量名称不满意,可以对变量进行重命名。R修改变量名称的方法有多种。可以用交互式编辑器,rename函数,names函数,colnames函数,rownames函数等来修改变量名称。1、交互式编辑器修改变量名fix()函数可以调用交互式编辑器来修改变量名称。若要修改数据集student中的变量名,键入fix(student)即可打开交互式编辑器的界面。单击交互式编辑器界面中对应要修改的变量名称,可手动输入新的变量名。2、rename函数修改变量名reshape包中的rename()函数可用于修改数据框和列表的变量名,但不能用于修改矩阵的变量名。rename()函数的使用格式为:rename(dataframe,c(oldname=”newname”,……))。例:将student数据集中的name修改成xingming,代码及运行结果如下所示:install.packages("reshape")#如果没有安装reshape包,则应该先安装它library(reshape)#加载reshape包rename(student,c(name="xingming"))#将student数据集中的name修改成xingmingidxingmingscorescorecat11张三69及格22李四20不及格33王五75及格44赵六NA<NA>3、names函数修改变量名names()函数的使用格式为:names(x)<-value。例:将student数据集中的“xingming”修改成“name”,代码及运行结果如下所示:>names(student)[2]<-"name">studentidnamescorescorecat11张三69及格22李四20不及格33王五75及格44赵六NA<NA>4、colnames函数和rownames函数修改变量名rename函数和names函数都不能用于修改矩阵的变量名。R语言中用于修改矩阵列名和行名的函数分别是colnames函数和rownames函数,另外这两个函数也能够修改数据框的列名和行名。这两个函数不能用于修改列表的变量名。colnames函数和rownames函数的使用格式为:colnames(x)<-value;rownames(x)<-value。例:将student数据集中的第一列id修改成stuID,行名改为a,b,c,d。代码及运行结果如下:>studentidnamescorescorecat11张三69及格22李四20不及格33王五75及格44赵六NA<NA>>colnames(student)[1]<-"stuID">rownames(student)<-letters[1:4]>studentstuIDnamescorescorecata1张三69及格b2李四20不及格c3王五75及格d4赵六NA<NA>五、缺失值在数据分析过程中,数据都可能由于未作答问题,设备故障或其他原因导致的不完整。在R中,缺失值以NA(NotAvailable,不可用)表示。当数据集存在缺失值时,建模过程中就容易出现报错的情况。因此,缺失值分析是数据分析过程中最重要的一步。1、常用于缺失值分析的函数函数描述is.na(x)返回一个与x等长的逻辑向量,并且由相应位置的元素是否是NA来决定这个逻辑向量相应位置的元素是TRUE还是FALSE。TRUE表示该位置的元素是缺失值anyNA(x,recursive=FALSE)判断数据中是否存在缺失值,返回TRUE或FALSE值。若存在缺失值,则返回TRUE,否则返回FALSEna.omit(x)删除含有缺失值的观测complete.cases(x)返回一个逻辑向量,不存在缺失值的行的值为TRUE,存在缺失值的行的值为FALSE2、在分析中排除缺失值确定了缺失值的位置以后,需要在进一步分析数据之前以某种方式删除这些缺失值。原因是,含有缺失值的算术表达式和函数的计算结果也是缺失值。多数数值函数都有一个na.rm=TRUE选项,可以在计算之前移除缺失值并使用剩余值进行计算。例:计算x中元素的和,排除其中的缺失值。代码及运行结果如下所示:>x<-c(1,3,NA,5)>y<-sum(x,na.rm=TRUE)>y[1]9可以通过na.omit()函数移除所有含有缺失值的观测。na.omit()函数可以删除所有含有缺失数据的行。例:把na.omit()函数用在student数据集上,代码及运行结果如下所示:>studentstuIDnamescorescorecata1张三69及格b2李四20不及格c3王五75及格d4赵六NA<NA>>newstudent<-na.omit(student)>newstudentstuIDnamescorescorecata1张三69及格b2李四20不及格c3王五75及格六、类型转换在转换、判断数据类型的时候,经常用到两类函数,一类是”as+”.”+数据类型”,一类是”is+”.”+数据类型”。根据这两类函数,就可以自由地根据具体的需要,来转换不同的数据类型。常用的数据源类型转换函数:判断转换is.numeric()as.numeric()is.logical()as.logical()is.vector()as.vector()is.character()as.character()is.matrix()as.matrix()is.data.frame()as.data.frame()举例:>x<-c(1,2,3,4,5)>x[1]12345>is.numeric(x)[1]TRUE>x<-as.character(x)>x[1]"1""2""3""4""5">is.numeric(x)[1]FALSE>is.vector(x)[1]TRUE>is.character(x)[1]TRUE七、数据排序数据排序作为一个重要的数据处理方法,在数据预处理和数据建模中都显得尤其重要。在R语言中,数据排序可以通过多种方式实现。常用的函数有三个,sort()函数、rank()函数和order()函数,需要注意的是,这三种函数的用法和返回结果是不同的。三个函数的简单使用代码如下所示:>x<-c(10,20,5,60)>rank(x)[1]2314>order(x)[1]3124>sort(x)[1]5102060从上面的结果中可以看出三个函数的区别,rank函数返回的是该值处于第几位,order函数返回的是排序数据所在向量中的索引,sort函数返回的是按次序排好的数据。八、数据集的合并如果数据分散在多个地方,就需要在继续下一步之前将其合并,本节介绍向数据框中添加列和行的方法。1、向数据框添加列:可以使用merge()函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化学铣切工诚信道德能力考核试卷含答案
- 船舶木塑帆缆制造工安全意识强化竞赛考核试卷含答案
- 酸再生工创新意识竞赛考核试卷含答案
- 机动车驾驶教练员岗前安全意识考核试卷含答案
- 拖拉机驾驶员安全操作评优考核试卷含答案
- 合成油脂装置操作工安全管理能力考核试卷含答案
- 钟表及计时仪器制造工操作技能模拟考核试卷含答案
- 生漆加工工操作安全评优考核试卷含答案
- 鱼糜制作工安全意识强化知识考核试卷含答案
- 香料分馏工复试强化考核试卷含答案
- 2025年中考道德与法治真题试题和答案详解
- 多模态虚假信息分析课题申报书
- 生产急救管理制度
- 2026年乌鲁木齐市高中美术创作能力测试试卷及答案
- 2026北京海淀初二上学期期末英语试卷和答案
- 预拌干混砂浆培训课件
- 2025年智慧物流综合服务平台项目可行性研究报告
- 河道沙石破碎筛分施工方案
- 2026年高考地理压轴训练卷2
- 企业债券发行流程及法律风险管理方案
- 宠物领养协议书范文合集
评论
0/150
提交评论