美文网首页生信星球培训第八期
学习小组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