美文网首页R
R语言编程-Tidyverse 书籍-第一章(1)

R语言编程-Tidyverse 书籍-第一章(1)

作者: Hello育种 | 来源:发表于2022-06-07 15:17 被阅读0次

    此部分的内容,全部是对张敬信博士书籍的学习总结。
    出发点: 因为tidyverse简洁编码,使R代码更加易读。我就想系统再次学习下R,这样让自己写的R代码更加简洁。

    0 简介

    0.1认识编程元素和语法规则

    R中编程元素:元素,向量,数据框,列表,
    Hadley Wickham定义的数据科学的工作流程:
    数据读入- 清理数据-数据转换-数据可视化-数据建模-文档沟通


    image.png

    0.2 R语言编程思想

    1. 面向对象:一切,包括数值,函数,图像等
    2. 面向函数: 函数式思维,包括自定义函数和泛函式编程
    3. 向量话编程: 指的是向量,矩阵,多维数组

    1 基本语法

    image.png

    1.1 基本运算

    %/%:整除
    %%:求余数
    indentical(x,y):判断两个对象是否严格相等
    dplyr:near(x,y): 判断两个浮点数数是否近似相等


    | : 或
    &: 与
    上述两个运算符是向量运算符,对向量中所有元素分别进行运算

    1.2 基本数据类型

    数值型, 逻辑型,字符型
    R中NA表示缺失值,NULL表示空值,NaN表示非数,Inf表示无穷大
    对于大多数函数,NA具有传染性,即NA参与的运算,结果会变成NA
    可以使用calss, typeof, mode()查看对象x的蕾西
    str()显示对象x的结构

    保存和载入数据

    save(x, file="datas..")
    load()

    Vignettes (若有) ,是包的作者写的使用文档,它是该包的最佳学习资料

    可以创建project来进行
    向量都有两个属性:type(类型), length(长度)

    numeric()## 创建一个全为0的指定长度的数值向量

    创建等差向量
    seq(from, to, by, length.out)
    
    创建重复的向量
    rep(x, times. lenght.out, each,...)
    

    两个长度不同的向量做运算,短的会自动循环补齐以配合长的

    逻辑向量
    image.png

    %in%用来判断元素是否属于集合

    字符向量

    移除向量名字: names(x) = NULL

    对向量排序

    sort(x, decreasing, na.last,....): sort(x)
    order(), 返回值是元素排好序的索引,以其结果作为索引访问元素,正好是排好序的向量。
    x[order(x)]
    rank(), 返回值是该向量中对应元素的“排名”。
    rev()### 翻转

    matrix创建

    矩阵也要求元素是同一类型,数值矩阵、逻辑矩阵等
    matrix(x, ncol, nrow, byrow, dimnames, )
    对角矩阵: diag(1:4, nrow=4)
    矩阵运算:


    1653290483(1).png

    矩阵乘法:** %*% **

    多维数组

    创建: array(data, dim, dimnames, ),
    访问: array(行, 列, 第三个维度)


    1653290656(1).png 1653290790(1).png

    1.3 数据结果②:列表,数据框, 因子

    列表

    列表最大的好处就是,它能够将多个不同类型的对象打包到一起,使得可以根据位置和名字访问它们。
    list()
    常使用$提取内容
    使用[]提取对象内容时,类型仍然是对象, [[]]提出对象的下一级:


    1653291807(1).png

    数据框

    tibble()创建:
    tribble() 按行录入数据式创建tibble
    as_tibble()转换数据为tibble

    数据框是由列向量组成、有着矩阵形式的列表。
    R中自带的数据框是data.frame , 但是建议改为tibble. 这是由Hardley提出的新取代方法。
    并且Tidyverse对所有的数据框操作使用tibble.
    Tibble的优点:


    1653292675(1).png

    可以以列表方式提取数据框的元素和子集
    矩阵方式提取数据框的元素和子集,这和我们平时使用矩阵提取的方式相同。
    ####### 筛选按列名属于集合{x, y, w}来选df的列, 并选择前两行:

    ind = names(df) %in% c("x", "y", "w")
    df[1:2, ind]
    

    str() 显示对象的结构

    glimpse()

    summary()作用在数据框上,可以生成各列/行的汇总信息

    expand.grid(), 可以生成多个属性水平值得所所有组合

    1.3.3 因子(factor)

    变量分为定量和定性数据。
    定性的可以分为名义型和有序型(与好坏之分),这类数据使用因子。
    因子:factor(x, levels, labels, ordered, ...)


    image.png

    转变为因子型后,数据向量显示出来的与原来一样,但是内在存储已经变了。

    其他有用函数

    table()### 统计各水平出现次数
    cut(x, breaks, lables,...)


    image.png

    gl()函数,用于多因素试验设计, 用该函数生成多个因素完全组合,基本格式如下:
    gl(水平,重复数, 总长度,因子的名称)


    image.png
    forcats包专门处理因子水平

    as_factor(), fct_count():计算各个水平, fct_c():合并


    image.png
    image.png

    1.4 数据结果③:字符串,日期时间

    #########字符串
    是用双引号或单引号括起来的若干字符,建议用双引号。
    tidyverse 系列中的stringr 包提供了一系列接口一致的、简单易用的字符串操作函数。

    字符串的长度
    image.png
    字符串的合并
    image.png
    image.png
    字符串的拆分
    image.png
    字符串的格式化输出

    使用函数str_glue(), str_glue_data()就可以将字符串中变量名替换成变量值。


    image.png
    字符串的排序

    str_sort(x, decreasing, locale, ...) ###返回排好序的元素
    str_order(x, decreasing, locale, ...) ###返回排好序的索引
    locale是设定语言,默认为en英语

    字符串的检测匹配
    image.png
    字符串子集的提取

    str_sub(字符, start, end)


    image.png
    提取匹配的内容
    image.png
    修改字符串
    image.png
    字符串其他函数
    image.png
    image.png

    日期时间

    日期时间值通常以字符串形式传入R 中,然后转化为以数值形式存储的日期时间变量。
    lubridate包供了更加方便的函数,生成、转换、管理日期时间数据。
    无论年月日/时分秒按什么顺序及以什么间隔符分隔,总能正确地识别成日期时间值:


    image.png

    格式化输出日期时间 - format()函数

    image.png

    给定模板格式输出:


    image.png

    提取日期时间数据的组件

    image.png

    使用with_tz()将时间数据转换为另一时区的同一个时间
    force_tz() 将时间数据的时区强制转换为另一个时区


    image.png

    模糊提取到不同的时间单位

    round_date(t, unit = "hour")

    相关文章

      网友评论

        本文标题:R语言编程-Tidyverse 书籍-第一章(1)

        本文链接:https://www.haomeiwen.com/subject/ntslprtx.html