美文网首页生信星球培训第八期
学习小组Day6笔记--🙃D

学习小组Day6笔记--🙃D

作者: 忆落_angle | 来源:发表于2018-10-27 17:17 被阅读75次

            生信起步第六站-R大哥的“魔法”技能。


    之前一直很“怨恨”R包,主要因为各种安装可能会遇到各种麻烦,但不可否认的是,正是因为这些“麻烦”,才让我发现R大哥是个很有内涵的家伙,技能很多嘛。今天,他将变身“巴啦啦大魔哥”🧚‍♂️,打开他的一个包裹,给我们展示的就是“如何对数据施魔法”。


    Tydir包裹准备

    一、获得包裹

    (一) 获取包裹小抄(生信星球tidyr)

    (二) 安装包裹-极简安包

    1 Rstudio控制台输入library(tidyr),检查是否已经安装过
    2-1安装过:congratulation!
    2-2没安过:键入install.packages("tidyr")自动安装,再加载tidyr看一下
    (若报错,换国内镜像:Tools→Global Options→Packages→CRAN mirror→Change→China开头几个选项里,哪个近选哪个)


    二、了解包裹

    (一)认识Tidy Data

    Tidy Data我更喜欢把它联想成R大哥变魔术的辅助动物-那只泰迪熊🐻:这个泰迪就是一个管理小队长,可以把数据归拢的齐齐刷刷💁‍♀️最简单的理解示例就好比用Excel录入原始数据,你得把它变成SPSS格式才能进行统计处理吧,tidy就是中间这个“变”的环节。

    (二) 初步了解tydir功能

    (1)数据框的变形
    (2)处理数据框中的空值
    (3)根据一个表格衍生出其他表格
    (4)实现行或列的分割和合并
                                            🚩数据→数据框→数据处理+作图

    (三)了解数据框

    1 新建数据框(直接赋值给bioplanet)
    bioplanet<-data.frame(GeneID = rep("gene1",times=4),SampleName =paste("Sample",1:4,sep=""),Expression=c(14,19,18,15))
    
    新建数据框
    2 了解含义
    • data.frame:数据框。
    • rep:重复,括号中填要重复的字符和重复次数。
    • sep:分隔符。
    • paste:连接两个字符串。括号要填两个代连接字符并指定分隔符(sep),没有分隔符就填sep=“”
    • raw行;col列(column)。
    • 列名=列值(列名要加双引号)如:"gene1""Sample"
    • 概念:key-value--“键值对”,是“两个列名”的一种对应关系,如SampleName和Expression的对应。
    3 注意事项
    • 函数后面要加括号,括号里第一个参数是数据框名 如complete(table,nesting……)里的table
    • 字符串要加双引号:行名和列名部分可以不用加,但其他里的要加。

    施法

    1.Reshape Data

    归拢数据

    首先,建立一个施法对象--数据
    a<-data.frame(country=c("A","B","C"),"1999"=paste(c(0.7,37,212),"K"),"2000"=paste(c(2,80,213),"K"))
    
    新建数据

    然后,变变变💠

    • 标准修改gather(a,X1999,X2000,key = "year",value = "cases")

      标准修改.png
    • 简便修改gather(a,"year","cases",X1999,X2000)

      简便修改
      错误修改案例gather(a,X1999,X2000,"year","cases")这告诉了我们其所在位置的合理性
      错误修改案例
    • 排除法修改gather(a,year,cases,-country)

      排除法修改
      注:花花说这样的报错可以忽略哟~~

    2.Handle Missing Values

    用于处理丢失的数据(就是某些单元格有空值的情况)。 处理方式如下:
    (1)删除整行
    (2)根据上下文(瞎)蒙一个
    (3)同一列的空值填上同一个数。

    • 导入数据:X<-read.csv('doudou.csv')
    • 导出数据:write.csv(X,'doudou.csv')
      导入导出数据
    • 删除空值行drop_na(X,X2)
    • 根据上一行填空值fill(X,X2)
    • 空值填特定值replace_na(X,list(X2=2))
      删除、添加、重填加

    3. Expand Tables

    补空位和展列表

    • complete(把空值的位置补全)
      complete(X,nesting(X1),fill = list(X2=5))
      补全空位值(补为5)

    • expand(列出每列值所有可能的组合)光看括号里的字就能理解我算你赢🤪
      expand(Superman,GeneId,SampleName,Expression)
      expand一下
      看结果是不是就明白点了?是的😂
      就是把原来的数据排列组合再生成新表

    4.split cells

    分分合合

    首先建立一个table.txt
    table数据
    然后,变变变💠

    这块呢花花没有给“投食儿”,所以要根据原示例代码自学一下。先拿按列分割开刀

    separate(data, col, into, sep = “[^[:alnum:]]+”, remove = TRUE,
    convert = FALSE, extra = “warn”, fill = “warn”, …)
    

    乍一看,懵了吧?对!那就拆一拆,解读一下吧~
    data:数据框(前面讲了,bingo)
    col:需要被拆分的列(bingo)
    into:新建的列名,为字符串向量
    sep:被拆分列的分隔符(bingo)
    remove:是否删除被分割的列(Linux就接触过了,bingo)

    好的,那就试一下吧~

    • 按列分割separate

      按列分割的table
    • 按行分割separate_rows
      原理同上,继续试一试~

      按行分割table
    • 分割完了再合并回去unite
      思路:把最原始table的两列数据拆成了三列,再把这个三列合并回最初的两列

      合并回去

    Xmind

    Xmind

            两天下来,R大哥还是可以的。
            摒除成见,友好相处,才是王道🤝
            深呼吸,放轻松,保持微笑🙂


    相关文章

      网友评论

        本文标题:学习小组Day6笔记--🙃D

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