R语言实战总结 --第二章 数据类型及数据结构

第1章:

1、R语言的特性:
免费
**适合多种类型数据分析
可制图,数据可视化
可交互
匹配各种类型数据源
易扩展
拥有各种GUI,支持多平台
2、一个R会话示例:**
age <- c(1,3,5,2,11,9,3,9,12,3)
weight <- c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1)

平均值

mean(weight)

标准差(反映数据离散程度)

sd(weight)

相关度

cor(age,weight)

绘图

plot(重点内容

列表内容

age,weight)
q()
3、工作空间:

用户定义的对象都会保存在工作空间(workspace)里,作为一个镜像,下次启动R会自动载入。可以用getwd()和setwd(“mydirectory”)查看和设置工作目录,不在工作目录的文件,调用时需要写绝对路径。

用于管理R工作空间的函数:

4、帮助文档:

help.start()
5、包:

包的安装

install.packages(“vcd”)

包的更新

update.packages()

查看已安装包的信息

installed.packages()

包的载入

library(vcd)
总结:这一章主要熟悉了R语言的开发环境RStudio,细节知识点并没有完全罗列出,目的是希望笔记能有尽可能少的信息量,抓住核心知识点,之后学习如果又发现这章的重点,会补充进去,迭代学习。
第2章:

1、按照个人要求的格式来创建含有研究信息的数据集,这是任何数据分析的第一步:(分以下两步)

选择一种数据结构来存储数据
将数据输入或导入到这个数据结构中
2、数据集:
数据集通常是由数据构成的一个矩形数组,行表示观测,列表示变量。(不同的行业对于数据集的行和列叫法不同。统计学家称它们为观测(observation)和变量(variable),数据库分析师则称其为记录(record)和字段(field),数据挖掘/机器学习学科的研究者则把它们叫做示例(example)和属性(attribute)。)

3、数据类型:

R可以处理的数据类型(模式)包括数值型、字符型、逻辑型(TRUE/FALSE)、复数型(虚数)和原生型(字节)。

4 、数据结构:

R拥有许多用于存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表。

向量:向量是用于存储数值型、字符型或逻辑型数据的一维数组。
a <- c(1,2,5,3,6,-2,4)
b <- c(“one”,”two”,”three”)
c <- c(TRUE,TRUE,TRUE,FALSE,TRUE,FALSE)
同一向量中无法混杂不同模式的数据。
a[c(2, 4)]用于访问向量a中的第二个和第四个元素,a <- c(2:6)等价于a <- c(2,3, 4, 5, 6)。

矩阵:
矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通过函数matrix创建矩阵。一般使用格式为:

其中vector包含了矩阵的元素,nrow和ncol用以指定行和列的维数,dimnames包含了可选的、以字符型向量表示的行名和列名。选项byrow则表明矩阵应当按行填充(byrow=TRUE)还是按列填充(byrow=FALSE),默认情况下按列填充。

创建矩阵:

y <- matrix(1:20,nrow=5,ncol=4)
y
[,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,26,24,68)
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 26
R2 24 68
下标使用:

x <- matrix(1:10,nrow=2)
x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
x2, 2 4 6 8 10
x,2 3 4
x1,4 7
x1,c(4,5) 7 9
当维度超过2时,不妨使用数组。当有多种模式的数据时,不妨使用数据框。

数组:

其中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

元素z[1,2,3]为15。

数据框:

patientID <- c(1,2,3,4)
age <- c(25,34,28,52)
diabetes <- c(“Type1”,”Type2”,”Type1”,”Type1”)
status <- c(“Poor”,”Improved”,”Excellent”,”Poor”)
patientdata <- data.frame(patientID,age,diabetes,status)
patientdata
patientID age diabetes status
1 1 25 Type1 Poor
2 2 34 Type2 Improved
3 3 28 Type1 Excellent
4 4 52 Type1 Poor
patientdata[1:2]
patientID age
1 1 25
2 2 34
3 3 28
4 4 52
patientdata[c(“diabetes”,”status”)]
diabetes status
1 Type1 Poor
2 Type2 Improved
3 Type1 Excellent
4 Type1 Poor
patientdata$age
1 25 34 28 52
table(patientdata diabetes,patientdata status)

    Excellent Improved Poor

Type1 1 0 2
Type2 0 1 0

attach(),detach,with():

summary(mtcars mpg)Min.1stQu.MedianMean3rdQu.Max.10.4015.4219.2020.0922.8033.90plot(mtcars mpg,mtcars disp)plot(mtcars mpg,mtcars$wt)
也可以写成:

attach(mtcars)
summary(mpg)
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.42 19.20 20.09 22.80 33.90
plot(mpg,disp)
plot(mpg,wt)
detach(mtcars)
对象冲突:

mpg <- c(25,36,47)
attach(mtcars)
The following object is masked by .GlobalEnv:

mpg

plot(mpg,wt)
Error in xy.coords(x, y, xlabel, ylabel, log) :
‘x’ and ‘y’ lengths differ
mpg
1 25 36 47
使用with():

with(mtcars,{summary(mpg,disp,wt)
+ plot(mpg,disp)
+ plot(mpg,wt)
+ })
with(mtcars,{
+ nokeepstats <- summary(mpg)
+ keepstats <<- summary(mpg)
+ })
nokeepstats
Error: object ‘nokeepstats’ not found
keepstats
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.42 19.20 20.09 22.80 33.90
实例标识符:

因子:
类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)。

diabetes <- factor(diabetes)
diabetes
1 Type1 Type2 Type1 Type1
Levels: Type1 Type2
status <- factor(status,ordered=TRUE)
status
1 Poor Improved Excellent Poor
Levels: Excellent < Improved < Poor
status <- factor(status,order=TRUE,levels=c(“Poor”,”Improved”,”Excellent”))
status
1 Poor Improved Excellent Poor
Levels: Poor < Improved < Excellent
patientID <- c(1,2,3,4)
age <- c(25,34,28,52)
diabetes <- factor(diabetes)
status <- c(“Poor”,”Imlproved”,”Excellent”,”Poor”)
diabetes <- factor(diabetes)
status <- factor(status,order=TRUE)
patientdata <- data.frame(patientID,age,diabetes,status)
str(patientdata)
‘data.frame’: 4 obs. of 4 variables:
patientID:num1234 age : num 25 34 28 52
diabetes:Factorw/2levelsType1,Type2:1211 status : Ord.factor w/ 3 levels “Excellent”<”Imlproved”<..: 3 2 1 3
summary(patientdata)
patientID age diabetes
Min. :1.00 Min. :25.00 Type1:3
1st Qu.:1.75 1st Qu.:27.25 Type2:1
Median :2.50 Median :31.00
Mean :2.50 Mean :34.75
3rd Qu.:3.25 3rd Qu.:38.50
Max. :4.00 Max. :52.00
status
Excellent:1
Imlproved:1
Poor :2
函数str(object)可提供R中某个对象(本例中为数据框)的信息。函数summary()会区别对待各个变量。它显示了连续型变量age的最小值、最大值、均值和各四分位数,并显示了类别型变量diabetes和status(各水平)的频数值。

列表:

g <- “My First List”
h <- c(25,26,18,39)
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 25 26 18 39

[3]
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10

4 “one” “two” “three”

mylist2 25 26 18 39
mylist[“ages”] 25 26 18 39
5、输入:
mydata <- data.frame(age=numeric(0),gender=character(0),weight=numeric(0))
mydata <- edit(mydata)
可修改,输入值,类型。

再次查看:

mydata <- edit(mydata)

等效:

fix(mydata)
(其它输入方式略)
总结:这一章主要介绍了数据结构,以及数据的输入输出,选择合适的数据结构能让我们更好地处理数据。多敲代码,多加练习思考,才能掌握好它们,为之后的学习做好准备。


快捷键

  • 加粗 Ctrl + B
  • 斜体 Ctrl + I
  • 引用 Ctrl + Q
  • 插入链接 Ctrl + L
  • 插入代码 Ctrl + K
  • 插入图片 Ctrl + G
  • 提升标题 Ctrl + H
  • 有序列表 Ctrl + O
  • 无序列表 Ctrl + U
  • 横线 Ctrl + R
  • 撤销 Ctrl + Z
  • 重做 Ctrl + Y

Markdown及扩展

Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]

使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。

本编辑器支持 Markdown Extra ,  扩展了很多好用的功能。具体请参考Github.

表格

Markdown Extra 表格语法:

项目 价格
Computer $1600
Phone $12
Pipe $1

可以使用冒号来定义对齐方式:

项目 价格 数量
Computer 1600 元 5
Phone 12 元 12
Pipe 1 元 234

定义列表

Markdown Extra 定义列表语法:
项目1
项目2
定义 A
定义 B
项目3
定义 C

定义 D

定义D内容

代码块

代码块语法遵循标准markdown代码,例如:

@requires_authorization
def somefunc(param1='', param2=0):
    '''A docstring'''
    if param1 > param2: # interesting
        print 'Greater'
    return (param2 - param1 + 1) or None
class SomeClass:
    pass
>>> message = '''interpreter
... prompt'''

脚注

生成一个脚注1.

目录

[TOC]来生成目录:

  • 平均值
  • 标准差反映数据离散程度
  • 相关度
  • 绘图
  • 包的安装
  • 包的更新
  • 查看已安装包的信息
  • 包的载入
  • 等效
    • 快捷键
    • Markdown及扩展
      • 表格
      • 定义列表
      • 代码块
      • 脚注
      • 目录
      • 数学公式
      • UML 图
    • 离线写博客
    • 浏览器兼容

数学公式

使用MathJax渲染LaTex 数学公式,详见math.stackexchange.com.

  • 行内公式,数学公式为: Γ(n)=(n1)!nN
  • 块级公式:

x=b±b24ac2a

更多LaTex语法请参考 这儿.

UML 图:

可以渲染序列图:

Created with Raphaël 2.1.0 张三 张三 李四 李四 嘿,小四儿, 写博客了没? 李四愣了一下,说: 忙得吐血,哪有时间写。

或者流程图:

Created with Raphaël 2.1.0 开始 我的操作 确认? 结束 yes no
  • 关于 序列图 语法,参考 这儿,
  • 关于 流程图 语法,参考 这儿.

离线写博客

即使用户在没有网络的情况下,也可以通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.csdn.net/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。

用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。

博客发表后,本地缓存将被删除。 

用户可以选择 把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。

注意:虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱

浏览器兼容

  1. 目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。
  2. IE9以下不支持
  3. IE9,10,11存在以下问题
    1. 不支持离线功能
    2. IE9不支持文件导入导出
    3. IE10不支持拖拽文件导入


  1. 这里是 脚注内容. ↩

你可能感兴趣的:(R语言实战总结 --第二章 数据类型及数据结构)