版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第三讲第三讲 数据操作数据操作内容提要内容提要 变量创建与删除变量创建与删除 变量重命名变量重命名 缺失值缺失值 数据类型转化数据类型转化 数据排序数据排序 数据合并数据合并 数据子集提取数据子集提取 数据重构数据重构 常用函数常用函数 数据探索数据探索 常见循环常见循环 自编函数自编函数3.1 变量创建与删除变量创建与删除mydata - data.frame( x1 = c(2, 2, 6, 4), x2 = c(3, 4, 2, 8) )# 方法一方法一mydata$sum - mydata$x1 + mydata$x2mydata$mean - (mydata$x1 + mydata
2、$x2)/2# 方法二方法二mydata - transform( mydata, sum = x1 + x2, mean = (x1 + x2)/2 )# 变量删除变量删除mydata$ mean - NULL 3.2 变量的重命名变量的重命名df - mydata第一种方法:调用编辑器重命名第一种方法:调用编辑器重命名fix(df)第二种方法:使用函数第二种方法:使用函数 names( )重命名重命名names(df)names(df)1:3 - c(“A”, ”B”, ”C”)3.3 缺失值的处理缺失值的处理 缺失值:缺失值:NA (Not Available,不可用,不可用) 不可能出
3、现的值:不可能出现的值: NaN(Not a Number,非数值,非数值) 函数函数 is.na()可检测缺失值是否存在。可检测缺失值是否存在。例子例子x - c(1:3, 5,7, NA, 9)sum(x) # 结果为结果为 NAsum( x, na.rm = T ) # 结果为结果为 27缺失值图形化缺失值图形化library(VIM)matrixplot(sleep)matrixplot ( )函数对数值型数据转化到0, 1区间,并用灰度来表示大小:浅色表示值小,深色表示值大。缺失值默认是红色。 3.4 数据类型的转换数据类型的转换数据转换例子数据转换例子Rep - c( 1:6 )
4、# Rep 赋值赋值is.numeric(Rep) # 数值型判断:真数值型判断:真is.factor(Rep) # 因子判断:假因子判断:假Rep - as.factor(Rep) # 转换为因子转换为因子is.factor(Rep) Rep - c( 1:6 ) # 因子判断:因子判断:真真3.5 数据的排序数据的排序 R 自带的自带的 order( )函数函数 plyr 程序包的程序包的 arrange( )函数函数# 按按 Spacing、Fam、rank 先后依次排序先后依次排序# R 自带的自带的 order( )排序排序df - df order(df$Spacing, df$F
5、am, df$rank.dj), #plyr 程序包的程序包的 arrange( )函数排序函数排序library(plyr)df - arrange( df, Spacing, Fam, rank.dj ) 排序例子排序例子# 创建数据框创建数据框df - data.frame (id = 1:4,weight = c(20, 27, 24, 22),size = c(small, large, medium, large)# id weight size# 1 20 small# 2 27 large# 3 24 medium# 4 22 large# R 自带的自带的 order( )函
6、数函数df order(df$weight), # plyr 包的包的 arrange( )函数函数library(plyr)arrange(df, weight)arrange(df, size, weight)arrange(df, size, -weight)setwd(D:)stu.df-read.table(file=stu.data.csv,header=T,sep=,) 读入数据读入数据stu.data.csv ,数据集命名为数据集命名为stu.df ; 创建一个新变量创建一个新变量height2,height2以以m为单位,为单位,与与height等值;等值; 创建新变量创建新
7、变量armlegL,armlegL=armL+legL,然,然后再删除变量后再删除变量armlegL; 将将height2的第的第2,5,7,10个值删除;个值删除; 判断判断grade的数据类型,将其转换为因子;的数据类型,将其转换为因子; 对数据集按年龄对数据集按年龄(升序升序)、体重、体重(降序降序)排序。排序。setwd(D:)stu.df-read.table(file=stu.data.csv,header=T,sep=,)df-stu.dfnames(df)df$height2-df$height/100df$armlegL-df$arml+df$legldf$armlegL-N
8、ULL df$height2c(2,5,7,10)-NA is.numeric(df$Grade) df$Grade-as.factor(df$Grade)is.factor(df$Grade)library(plyr)df2-arrange(df,age,-weight)3.6 数据集的合并数据集的合并 3.6.1 列合并列合并# 共有变量共有变量: IDtotal - merge(dataA, dataB, by = ”ID”)# 共有变量共有变量: ID、Countrytotal - merge(dataA, dataB, by = c(”ID”, “Country”)#含有一样的行数,
9、而且以相同顺序排序。含有一样的行数,而且以相同顺序排序。total - cbind(dataA, dataB)列合并例子列合并例子# 创建数据框创建数据框 dataAdataA - read.table( header = T, text = storyid title1 lions2 tigers3 bears)# 创建数据框创建数据框 dataBdataB - read.table( header = T, text = subject storyid rating1 1 6.71 2 4.52 2 3.32 1 5.2)# 合并数据框合并数据框 dataA, dataBmerge(dat
10、aA, dataB, storyid)# 将将 dataA 的的 stroyid 重命名为重命名为 idcolnames(dataA) ,1 - c(“Id”)merge(x = dataA, y = dataB, by.x = “id”, by.y = “storyid“)3.6.2 行合并行合并 total - rbind(dataA, dataB) 注意:注意:dataA 与与 dataB 需含有一样的变量,需含有一样的变量,但排列的顺序可以不同。但排列的顺序可以不同。行合并例子行合并例子dfA - data.frame( Subject = c(1, 1, 2, 2), Respons
11、e = c(X, X, X, X) )dfB - data.frame( Subject = c(1, 2, 3), Response = c(Z, Y, Z) )df - rbind(dfA, dfB)dfA$Coder - AdfB$Coder - B“df - rbind(dfA, dfB)3.7 数据子集的提取数据子集的提取 3.7.1 根据位置选取子集根据位置选取子集使用方法如下:使用方法如下:dfm1, 表示返回第表示返回第 m1 行的数据行的数据dfc(m1,m2,. ,mj), 表示返回由第表示返回由第 m1,m2,.mj 行组成的数据框行组成的数据框df ,n1 表示返回第表
12、示返回第 n1 列的数据列的数据df ,c(n1,n2,. ,nk) 表示返回由第表示返回由第 n1,n2,.nk 列组成的数据框列组成的数据框例子例子# 创建数据框创建数据框df - read.table( header = T, text = subject sex size1 M 72 F 63 F 94 M 11)# 以行取子集以行取子集df1, dfc(1,3), # 以列取子集以列取子集df ,1df ,c(1,3)# 以行列组合取子集以行列组合取子集dfc(1,3), c(1,3)3.7.2 根据列名选取子集根据列名选取子集使用方法如下:使用方法如下:df, “name1” 表示
13、返回列名为表示返回列名为 name1 的数据的数据df, c(“name1” , “name2” , . , “namek”) 表示返回由多个列组成的数据框表示返回由多个列组成的数据框df ,size # 返回数据返回数据df size # 返回数据框返回数据框df ,c(size,sex)3.7.3 使用使用 subset()函数函数subset(df, select=c(name1,name2, . ,namek) 表示返回由多个列组成的数据框表示返回由多个列组成的数据框subset(df , select = subject)subset(df , subject 3)subset(df
14、 , subject 3, select = -subject) subset(df , subject 3 & sex=M)3.8 数据的整合与重构数据的整合与重构 3.8.1 数据转置数据转置 使用使用 t()函数即可对一个矩阵或数据框实现行和列数函数即可对一个矩阵或数据框实现行和列数据的转置。据的转置。df-matrix( c(37, 150, 49, 100, 23, 57), nr = 2, dimnames = list( c(D, UD),c( A, B, C )t.df-t(df)3.8.2 数据整合数据整合aggregate(df, by, FUN) 其中,其中,df
15、 是数据框,是数据框,by 是变量名组成是变量名组成的列表,的列表,FUN 是函数,用以计算观测值。是函数,用以计算观测值。3.8.3 使用使用 reshape2 包包library(reshape2)# 创建数据集创建数据集 #set.seed(1234)df - array( sample(8), dim = c(2, 2, 2) )df - melt( df, varnames = c(A,B,C), = ht1 )df$ht2 - sample( 1:10, 8 )# 数据融合数据融合 #df 20、grade3的所有数据;的所有数据; 计算体重计算体重weigh
16、t的平均值,找出身高的平均值,找出身高height最大值。最大值。3.10 数据探索数据探索3.10.1 数据结构查看数据结构查看dim(iris) # 数据集的维度,有多少行多少列?数据集的维度,有多少行多少列?names(iris) # 数据有哪些列?数据有哪些列?str(iris) # 数据的结构如何?数据的结构如何?iris1:5, # 查看数据的前查看数据的前 5 行行head(iris) # 查看数据的前查看数据的前 6 行行tail(iris) # 查看数据的最后查看数据的最后 6 行行3.10.2 查看单个变量# 查看数据集中所有变量的关键数据查看数据集中所有变量的关键数据su
17、mmary(iris) # 单个变量的单个变量的 1%、25%、50%、75%、100%分位数分位数quantile(iris$Sepal.Length)# 返回均值、中位数和数据的范围返回均值、中位数和数据的范围mean( ),median( ),range( )table(iris$Species) # 统计每个类别的频数统计每个类别的频数pie(table(iris$Species) # 画出每个类别比例的饼图画出每个类别比例的饼图3.10.3 查看多个变量查看多个变量#查看变量之间的相关性查看变量之间的相关性cor(iris ,1:4)# 针对每个针对每个 Species 水平绘制水平
18、绘制 Sepal.Length 的盒形图的盒形图boxplot(Sepal.Length Species, data = iris)# 绘制任意两个矩阵之间的散点图,及变量之间的相关性绘制任意两个矩阵之间的散点图,及变量之间的相关性pairs(iris)3.10.4 其他查看方法其他查看方法# 三维散点图三维散点图library(scatterplot3d)scatterplot3d(iris$Petal.Width, iris$Sepal.Length, iris$Sepal.Width)# 用热图可视化样本之间的相似性用热图可视化样本之间的相似性distMatrix - as.matrix
19、(dist(iris ,1:4)heatmap(distMatrix)# 绘制绘制 Sepal.Length 和和 Sepal.Width 的散点图的散点图library(ggplot2)qplot(Sepal.Length, Sepal.Width, data = iris, facets = Species .)3.10.5 保存统计图形保存统计图形第一种方法,保存为第一种方法,保存为 pdf 文件文件# save as a PDF filepdf(myPlot1.pdf)x - 1:50plot(x, log(x)dev .off( )第二种方法,保存为图形文件第二种方法,保存为图形文件# Save as a figure filepng(myPlot2.png)x - 5:20plot(x, sin(x)dev .off( )3.11 循环控制和条件操作循环控制和条件操作3.11.1 条件语句条件语句if (conditon) expr1 else expr2 如果如果 condition 条件为真,则执行条件为真,则执行 expr1,否则执行否则执行 expr2。例子例子# 找出找出 100 以内的质数以内的质数x - 1:100y - rep(T, 100)for ( i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年西咸新区泾河第六学校招聘(18人)考试备考题库及答案详解
- 2026年7月杨陵惠仁医院招聘(79人)笔试备考题库及答案详解
- 2026云南临沧市临翔区商务局面向社会招聘公益性岗位人员1人考试参考题库及答案详解
- 2025年海口市龙华区中小学教师招聘考试试题及答案详解
- 2025年梧州市万秀区工会人员招聘考试试题及答案详解
- 2025年海南省三亚市工会人员招聘考试试题及答案详解
- 2026重庆育才中学教共体红光学校(重庆市红光中学)学科教师及重庆市红光中学附属幼儿园教师及保育员岗位人员8人考试参考题库及答案详解
- 赣县区2026年城区幼儿园选调、小学教师选调支教幼儿园(支援区托育综合服务中心)【62人】笔试备考试题及答案详解
- 2026年武汉市江夏区工会人员招聘笔试备考题库及答案详解
- 北京北化生物科技有限公司招聘14人考试参考题库及答案详解
- 2026湖南衡阳市衡东县第二批事业单位公开选调工作人员88人笔试备考题库及答案详解
- 2026湖南常德市鼎城区部分事业单位公开招聘高层次人才11人笔试备考试题及答案详解
- 2026拖拉机驾驶证科目一理论考试复习题库(含完整答案)
- 《DGTJ082467-2025超低能耗建筑设计标准居住建筑》
- 陕西延长石油集团有限责任公司 招聘专用笔试题库(历年真题+完整答案详解)
- 2026年昆明市石林国有资本投资集团有限公司及下属公司招聘(18人)笔试参考题库及答案详解
- 贯彻落实《全国党员教育培训工作规划(2024-2028年)》中期评估的工作报告
- 快递柜加盟合同范本
- 医疗AI伦理问题探讨与行业规范建设研究报告
- 2026四川成都兴城投资集团有限公司招聘11人笔试历年常考点试题专练附带答案详解
- 2026-2030中国四氧化三铁行业投资前景研究及销售战略分析研究报告
评论
0/150
提交评论