《R实战》读书笔记三
第二章 创建数据集
本章概要
1探索R数据结构
2使用数据编辑器
3数据导入
4数据集标注
本章所介绍内容概括例如以下。
两个方面的内容。
方面一:R数据结构
方面二:进入数据或者导入数据到数据结构
理解数据集
一个数据集通常由一个表格组合而成,行表示观測,列表示变量。
病人的数据集如表1所看到的。
表1 病人数据集
数据集可以反映数据结构、数据类型和内容。
数据结构
R数据结构如图2所看到的。
图2:R数据结构
数据结构即数据的组织方式。R数据结构包含向量、矩阵、数组、数据框和列表等。
R向量
R向量是一维数组,元素类型能够为数值型、字符型和逻辑型等。
函数c()可用来形成向量,比如:
> a <- c(1,2,3,4)
> b <- c("one", "two", "three", "four")
> c <- c(TRUE, TRUE, TRUE, TRUE)
向量元素数据类型必须同样,标量能够视为一个元素的向量。
向量元素获取方法,位置获取法或者逻辑获取法,比如:
> a[1]
[1] 1
> a[c(2,3)]
[1] 2 3
> a[2:4]
[1] 2 3 4
> a[a>2]
[1] 3 4
R矩阵
R向量是一个二维数组,矩阵中元素的数据类型必须同样。
创建矩阵的方法。即用矩阵函数。形式例如以下:
mymatrix <- matrix(vector, nrow=nrownum,ncol=ncolnum,byrow=logical_value,
dimnames=list(rownames_vector,colnames_vector))
创建矩阵。比如:
> x <- matrix(1:20, nrow=5, ncol=4)
> x
[,1] [,2] [,3] [,4]
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20
> cells <- c(1, 10, 100, 1000)
> rnames <- c("R1", "R2")
> cnames <- c("C1", "C2")
> mymatrix <- matrix(cells, nrow=2, ncol=2, byrow=TRUE, dimnames=list(rnames, cnames))
> mymatrix
C1 C2
R1 1 10
R2 100 1000
R数组
R数组与相似,但维数超过2维。
创建数组方法。即用数组函数,形式例如以下:
myarray <- array(vector, dimensions, dimnames)
创建数组,比如:
> dim1 <- c("A1", "A2")
> dim2 <- c("B1", "B2", "B3")
> dim3 <- c("C1", "C2", "C3", "C4")
> z <- array(1:24, c(2, 3, 4), dimnames=list(dim1, dim2, dim3))
> z
, , C1
B1 B2 B3
A1 1 3 5
A2 2 4 6
, , C2
B1 B2 B3
A1 7 9 11
A2 8 10 12
, , C3
B1 B2 B3
A1 13 15 17
A2 14 16 18
, , C4
B1 B2 B3
A1 19 21 23
A2 20 22 24
R数据框
R数据框中不同的列能够包括不同类型的内容。
表1病人数据集就能够使用R数据框来存放数据。
创建数据框,即用数据框函数,形式例如以下:
mydata <- data.frame(col1, col2, col3 ...)
创建数据框。比如:
> patientID <- c(1, 2, 3, 4)
> age <- c(24, 34, 28, 52)
> diabtetes <- c("Type1", "Type2", "Type1", "Type1")
> status <- c("Poor", "Improved", "Excellent", "Poor")
> patientdata <- data.frame(patientID, age, diabtetes, status)
> patientdata
patientID age diabtetes status
1 1 24 Type1 Poor
2 2 34 Type2 Improved
3 3 28 Type1 Excellent
4 4 52 Type1 Poor
获取数据框中的元素,比如:
> patientdata[1:2]
patientID age
1 1 24
2 2 34
3 3 28
4 4 52
> patientdata[,1]
[1] 1 2 3 4
> patientdata[1,]
patientID age diabtetes status
1 1 24 Type1 Poor
> patientdata[c("age", "status")]
age status
1 24 Poor
2 34 Improved
3 28 Excellent
4 52 Poor
> patientdata$age
[1] 24 34 28 52
> patientdata[,2]
[1] 24 34 28 52
R数据框生成交叉表,比如
> table(patientdata$diabtetes, patientdata$status)
Excellent Improved Poor
Type1 1 0 2
Type2 0 1 0
attach()函数能够把数据框增加到R的搜索路径。
detach()函数表示把数据框从R的搜索路径中移除。
R因子
分类或者有序分类变量在R中称为因子。
R 因子实比例如以下:
> patientID <- c(1, 2, 3, 4)
> age <- c(24, 34, 28, 52)
> diabtetes <- c("Type1", "Type2", "Type1", "Type1")
> status <- c("Poor", "Improved", "Excellent", "Poor")
> diabtetes <- factor(diabtetes)
> status <- factor(status, order=TRUE)
> patientdata <- data.frame(patientID, age, diabtetes, status)
> str(patientdata)
'data.frame': 4 obs. of 4 variables:
$ patientID: num 1 2 3 4
$ age : num 24 34 28 52
$ diabtetes: Factor w/ 2 levels "Type1","Type2": 1 2 1 1
$ status : Ord.factor w/ 3 levels "Excellent"<"Improved"<..: 3 2 1 3
> summary(patientdata)
patientID age diabtetes status
Min. :1.00 Min. :24.0 Type1:3 Excellent:1
1st Qu.:1.75 1st Qu.:27.0 Type2:1 Improved :1
Median :2.50 Median :31.0 Poor :2
Mean :2.50 Mean :34.5
3rd Qu.:3.25 3rd Qu.:38.5
Max. :4.00 Max. :52.0
R列表
R列表能够包括向量、矩阵、数据框、列表等。
创建列表的方法,即用列表函数,形式例如以下:
mylist <- list(object1, object2, ...)
创建列表。比如:
> g <- "My First List"
> h <- c(24, 12, 18, 29)
> j <- matrix(1:10, nrow=5)
> k <- c("one", "two", "three")
> mylist <- list(title=g, ages=h, j, k)
> mylist
$title
[1] "My First List"
$ages
[1] 24 12 18 29
[[3]]
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
[[4]]
[1] "one" "two" "three"
获取列表中的元素
> mylist[[1]]
[1] "My First List"
> mylist[[2]]
[1] 24 12 18 29
> mylist[2]
$ages
[1] 24 12 18 29
> mylist[["ages"]]
[1] 24 12 18 29
数据输入
R导入不同数据源,如图3所看到的。
图3:R导入不同数据源
R数据导入能够參阅R官方文档:http://cran.r-project.org/doc/manuals/R-data.pdf
R数据导入方式例如以下
方式一:从键盘导入,先创建一个空的数据框或者矩阵。后用edit()函数。
比如:
> mydata <- data.frame(age=numeric(0), weight=numeric(0))
> mydata <- edit(mydata)
> mydata
age weight
1 10 10
2 12 8
> fix(mydata) # 等价于mydata <- edit(mydata)
> mydata
age weight
1 10 10
2 12 8
3 8 7
方式二:从固定文本导入,使用函数read.table(),形式例如以下:
mydataframe <- read.table(file, header=logical_value, sep="delimiter", row.names="name")
方式三:从Excel导入,能够把Excel先转换为纯文本或者xxx.csv文件。使用方式二导入数据。或者在Windows操作系统,使用RODBC包中相关函数导入。比如:
> setwd("E:\\data")
> getwd()
[1] "E:/data"
> install.packages("RODBC")
> library(RODBC)
> channel <- odbcConnectExcel("patient.xls")
> mydataframe <- sqlFetch(channel,"Sheet1")
> mydataframe
weight height
1 60 1.75
2 72 1.80
3 57 1.65
4 90 1.90
5 95 1.74
6 72 1.91
> odbcClose(channel)
> mydataframe
weight height
1 60 1.75
2 72 1.80
3 57 1.65
4 90 1.90
5 95 1.74
6 72 1.91
若是Excel2007及以上版本号,使用xlsx包中函数导入数据,比如:
> install.packages("xlsx")
> library(xlsx)
加载须要的程辑包:rJava
加载须要的程辑包:xlsxjars
> mydataframe1 <- read.xlsx("patient.xlsx", 1)
> mydataframe1
weight height
1 60 1.75
2 72 1.80
3 57 1.65
4 90 1.90
5 95 1.74
6 72 1.91
方式四:从xml导入,能够用xml包种方法导入。能够參阅: www.omegahat.org/RSXML
方式五:从网页爬虫导入。能够先下载网页,再用readLines()方法,參阅:www.programmingr.com
方式六:从spss导入,能够用foreign包的read.spass()方法或者Hmisc包的spss.get()方法。
方式七:从sas导入,SAS9.1版本号下面,能够用用foreign包的read.ssd()方法或者Hmisc包的sas.get()方法;更高版本号,能够使用商业统计数据转换软件或者把SAS结果输出为csv格式。再用read.table()导入。
方式八:从stas导入,用foreign包的read.dta()方法。
方式九:从nteCDF导入,用ncdf或者ncdf4包中的方法。
方式十:从HDF5导入。用hdf5包中的方法。
方式十一:从DBMS导入。用包ODBC中方法。ODBC方法如图4所看到的。
图4: RODBC包的函数
一些与数据库打交道的包,比如:DBI、RJDBC、RMySQL、ROracle、RPostgreSQL和RSQLite等。
方式十二:从stattransfer导入
利用一个商业化软件stattransfer实现数据格式转换,參阅:www.stattransfer.com
标注数据
利用标准数据使得结果更易理解。通过变量标签或者值标签来标准数据。
工作于数据对象的实用函数
工作于数据对象的一些实用函数如图5所看到的:
图5:工作于数据对象的实用函数
总结
1 数据分析任务的挑战之中的一个就是数据准备。
2R组织数据的方式,向量、矩阵、数组、数据库、列表等
3R数据导入方式
Resource:
1http://www.wangluqing.com/2014/06/r-in-action-note3/
2《R in action》第一部分第二章创建数据集
《R实战》读书笔记三的更多相关文章
- R语言实战读书笔记(三)图形初阶
这篇简直是白写了,写到后面发现ggplot明显更好用 3.1 使用图形 attach(mtcars)plot(wt, mpg) #x轴wt,y轴pgabline(lm(mpg ~ wt)) #画线拟合 ...
- R实战读书笔记四
第三章 图形入门 本章概要 1 创建和保存图形 2 定义符号.线.颜色和坐标轴 3 文本标注 4 掌控图形维数 5 多幅图合在一起 本章所介绍内容概括例如以下. 一图胜千字,人们从视觉层更易获取和理解 ...
- iPhone与iPad开发实战读书笔记
iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的 ...
- <<Java RESTful Web Service实战>> 读书笔记
<<Java RESTful Web Service实战>> 读书笔记 第一章 JAX-RS2.0入门 REST (Representational State ransf ...
- 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...
- 机器学习实战 - 读书笔记(12) - 使用FP-growth算法来高效发现频繁项集
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第12章 - 使用FP-growth算法来高效发现频繁项集. 基本概念 FP-growt ...
- 机器学习实战 - 读书笔记(11) - 使用Apriori算法进行关联分析
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第11章 - 使用Apriori算法进行关联分析. 基本概念 关联分析(associat ...
- 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...
- 【转载】MDX Step by Step 读书笔记(三) - Understanding Tuples (理解元组)
1. 在 Analysis Service 分析服务中,Cube (多维数据集) 是以一个多维数据空间来呈现的.在Cube 中,每一个纬度的属性层次结构都形成了一个轴.沿着这个轴,在属性层次结构上的每 ...
- Spring实战读书笔记
Spring实战读书笔记 Spring-core Spring之旅 - DI 和 AOP 概念 spring 的Bean容器 spring 的 核心模块 Spring的核心策略 POJO 最小侵入式编 ...
随机推荐
- 使用gSoap规避和改动ONVIF标准类型结构的解析
ONVIF/gSoap依赖关系及问题 ONVIF是一组服务规范,标准參考 gSoap是一套基于实现SOAP通信接口的工具链 即是,当我们须要訪问ONVIF的Web Service或实现对ONVIF部分 ...
- 不合规范的html段落php处理细则
最近业余时间在维护一个rss聚合应用,就发现很多网站feed的条目摘要存在各种问题,用strip_tags一刀切吧,对摘要的段落和样式扭曲了 例如:有一些网站的摘要是截断输出,例如指定的摘要长度截断, ...
- SICP的一些个人看法
网上搜书的时候,看到非常多人将这本书神话. 坦率地说,个人认为这本书过于学术化, 没什么实际project价值.一大堆题目也基本是高中数学竞赛题类似,浪费时间. 软件的核心技术是什么? 1> ...
- WPF 3D 常用类(1)
原文:WPF 3D 常用类(1) 几何数据相关类 Geometry3D 抽象类, 用于定义物体的几何数据, 可用于计算HitTest和BoundingBox MeshGeometry3D Geomet ...
- Zookeeper分享
Zookeeper: 是一个分布式的,为分布式应用提供数据一致性服务的程序. Zookeeper是怎么来的? 分布式系统:是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信 ...
- telnet模拟http訪问
HTTP协议经常使用的无非就那么几个命令 GET HEAD PUT POST 此处简单说下http的GET和HEAD 举两个简单的样例: GET的样例 telnet serverip 80 GET h ...
- IIS7构造Gzip压缩
IIS7构造Gzip压缩 本文来自Kevin Yang博客 作者:Kevin Yang 开启配置HTTP压缩(GZip) 在IIS7中配置Gzip压缩相比IIS6来说实在easy了很多.并且默认情况下 ...
- Storm具体的解释(二)、成为第一Storm申请书
在全面介绍Storm之前,我们首先通过简单的Demo让我们来看看什么是整体感觉Storm. Storm执行模式: 本地模式(Local Mode): 即Topology(相当于一个任务,兴许 ...
- IIS URL Rewrite Module防盗链规则配置方法
IIS版本:IIS 7.5 URL Rewrite组件:IIS URL Rewrite Module(http://www.iis.net/downloads/microsoft/url-rewrit ...
- robot framework 使用三:他们主动浏览器的兼容性
robot framework 浏览器兼容性测试 上图中黄色圈的地方默认什么都不写,是firefox浏览器.写上ie就是ie浏览器了 firefox最新版本号即可,ie须要设置: 1. IE选项设置的 ...