生信零基础 Day6 by Sure栗子
2019-11-02 本文已影响0人
Sure栗子
继续R学习-R包的简单应用
以下资源均来自“生信星球公众号”
R包及其小抄
- R包是别人写好的封装好了的命令包,有各种各样的用途。
- 用途的说明书叫做cheatsheet,也就是小抄。跟着小抄加例子熟悉每一个R包
- 小抄的获取方式包括:搜索引擎+包名;上Rstudio自行下载
今日学习数据框整理包-tidyr
-
它能够做到如下功能,是数据处理的基础
(1)数据框的变形
(2)处理数据框中的空值
(3)根据一个表格衍生出其他表格
(4)实现行或列的分割和合并 -
安装
利用以下命令查看是否已经安装和安装这个包
> library(tidyr)
> install.packages("tidyr")
- 挂代理(补充内容)
我的网速这次还行,但是保不准。这里贴上来经验,以防万一
挂代理步骤.png
挂代理步骤2.png
-
载入tidyr包的时候发现他要求最新的R程序,所以升级R程序
程序包和R版本不符合.png
-
更新R程序,用以下代码可以在Rstudio中更新,很方便
期间会有各种选择,包括用Rgui升级啊,是否迁移旧R里的包啊,是否留存旧R数据啊,自行根据需要选择就行
install.packages("installr")
library(installr)
updateR()
更行R.png
正在更新R程序.png
更新成功.png
-
载入tydir包就没有问题了
tidyr没有再报错了.png
-
新建数据框的基础操作
给数据框来个小a的名字
a<-data.frame(GeneId = rep("gene5",times=3),SampleName =paste("Sample",1:3,sep=""),Expression=c(14,19,18))
其中
-
rep
,重复,括号中填要重复的字符和重复次数。 -
paste
,连接两个字符串,括号要填两个代连接字符并指定分隔符 -
sep
,没有分隔符就填sep=“”
-
1:3
表示从1到三。如需一列中需要填入三个无规律的数字,可以用向量c(1,3,4)
- 同样如果填的是字符串也需要加双引号,例如
c("doudou","huahua","xiaoyu")
建出来是这样的
建出来的数据框.png
-
使用tidyr
1.聚合与拆分数据框
gather和separate命令
gather(table4a, `1999`, `2000`,key = "year", value = "cases")
spread(table2, type, count)
小抄上的gather.png
自己操作的情况,需要注意生成的数据框是什么样子就原封不动的输入什么样子,这里的1999变成了“X1999”要注意
gather应用.png- 处理丢失数据
drop_na(x, x2)
fill(x, x2)
replace_na(x, list(x2 = 2))
丢失数据小抄.png
自己操作的情况
删除、填充、替换数据.png
********生信小花吐血推荐的命令:***********
X<-read.csv('doudou.txt')
这个命令支持R及Excel,默认参数好,转换txt不会乱码,强烈推荐。我现在就是有点不明觉厉😝
“可能别人不会这么教,但我在这里之所以选择了csv,是因为这个神奇的支持R和Excel,默认参数好的很(默认分隔符是“,”,导出时也不会默认加引号。如果你用read.table试试就知道默认参数多笨了),并且转换txt也不会变乱码!(我自己发现的,想夸我千万别忍着)”
在这里补充下csv的导入和导出方式。(默认参数好,学R没烦恼)——生信小花
导入:X<-read.csv('doudou.csv')
导出:write.csv(X,'doudou.csv')
- 拓展数据
complete(X,nesting(X1),fill = list(X2="happy"))
拓展数据小抄.png
这里,nesting后面括号里就是不变的列,可以多写几个;fill=list后面就是要填充的那一列
我的应用情况:
补全数据框.png
4.分割单元格
separate(table3, rate, into = c("cases", "pop"))
separate_rows(table3, rate)
分割单元格小抄.png
自己的操作情况:
分割.png
5.合并单元格
unite(table5, century, year, col = "year", sep = "")
合并单元格小抄.png
我自己的情况:
合并单元格.png