学习小组Day6笔记--善良土豆

今天继续R

今天有大坑!!!!!有坑才有大收获!!!!!

今天让我觉得最招人爱的事情就 小抄 这个东西

开饭!!!!!

小抄

就是R包的说明书(cheatsheet),了解后上手老快了,上手快了,离起飞也不远了!!!

如何获取一个R包的 小抄

方法1:百度/谷歌XX cheatsheet
方法2:去这里 https://www.rstudio.com/resources/cheatsheets/
方法3:关注生信星球微信公众号,后台输入某一个包名,例如:tidyr

什么是tidyr

既然都去人家公众号搜索了,那就今天来学习一下tidyr这个R包

它的功能主要有:
(1)数据框的变形
(2)处理数据框中的空值
(3)根据一个表格衍生出其他表格
(4)实现行或列的分割和合并
   这个包是把你要用的数据处理成标准而统一的数据框(Tidy Data,下面有解释),才能进行进一步的数据处理和作图,可以说是万里长征第一步!

Step1安装R包

1.打开Rstudio,设置好工作目录。代码窗口或控制台输入:library(tidyr)如果之前没有安装则会显示错误,信息为:Error in library(tidyr):不存在叫'tidyr'这个名字的程辑包
2.既然没有tidyr,那我们就下载安装它:install.packages("tidyr")
(这里会默认安装到你的工作目录里,下载很慢,只要控制台不出现>,就一直等着)
可能出现的报错
如出现报错可以尝试一下解决方案:换国内镜像,如下

Step_1.

Step_2.

Step_3.

修改后重新install.packages("tidyr")
library(tidyr)
没有报错成功

install.packages("tidyr")
library(tidyr)

Step2建立数据框

1.新建数据框

a<-data.frame(GeneId = rep("gene5",times=3),SampleName =paste("Sample",1:3,sep="_"),Expression=c(14,19,18)) 
View(a)
#新建数据框,并将其赋值给a
#rep:重复,括号中填要重复的字符和重复次数。
#paste:连接两个字符串,括号要填两个代连接字符并指定分隔符(sep),没有分隔符就填sep=“”。
#1:3表示从1到三。如需一列中需要填入三个无规律的数字,可以用向量c(1,3,4),同样如果填的是字符串也需要加双引号,例如c("doudou","huahua","xiaoyu")

数据框a

2.了解概念:key-value--“键值对” ,表示一种对应关系。“键”和“值”都是列名,如SampleNameExpression的对应。

3.函数后面一般都要加括号,括号里第一个参数是都数据框名

4.字符串要加双引号(行名和列名也是字符串,但是可以不用加),其他单元格(姑且这么叫了)里出现的字符串要加。
行:raw;列:col

Step3开始认识Tidy Data

Tidyr就是干下面这些活的
Tidyr的实现

1.Reshape Data

gather:我就是刚才的魔法棒

spread:我能让tidy data一夜回到解放前。

小抄闪亮登场!!!!(有你真好)

reshape Data
实战来了!!!
################################1.Reshape Data
b<-data.frame(country= c("A","B","C"),"1999"= paste(c(0.7,37,212),"K"),"2000" = paste(c(2,80,213),"K"))
View(b)
C<-data.frame(country= c("A","B","C"),`1999`= paste(c(0.7,37,212),"K"),`2000` = paste(c(2,80,213),"K"))
View(c)
d<-data.frame(country= c("A","B","C"),'1999'= paste(c(0.7,37,212),"K",sep="_"),'2000' = paste(c(2,80,213),"K"))
View(d)
###下面这条命令是错的,原因如下e<-data.frame(country= c("A","B","C"),1999= paste(c(0.7,37,212),"K",sep="_"),2000 = paste(c(2,80,213),"K"))
变量b,c,d均会得到如下结构的数据

变量e不成功的可能性
gather(d,X1999,X2000,key = "year",value = "cases") #gather魔法棒
gather(d,"year","cases",X1999,X2000) #推荐的偷懒做法
gather(d,year,cases,-country)  #-country的意思就是合并除country外剩下的列
gather结果

小抄又来了--处理丢失的数据(就是某些单元格有空值的情况)

Handle Missing Values

三种处理方式:
(1).删除整行
(2).根据上下文(瞎)蒙一个
(3).同一列的空值填上同一个数。

################################2.Handle Missing Values
getwd()#看看我现在在哪呢
setwd(dir='C:/Users/Dell/Desktop/Potato_learn_R')#找到自己的要工作的路径
X<-read.csv('doudou.txt')
View(X) #看一下X是什么结构信息,知道了,X2列里面有NA,开搞
e<-drop_na(X,X2)
View(e) #drop_na()干了啥?哦~,把有空值的,整行删除掉
f<-fill(X,X2)
View(f) #fill()又干了啥?哦~,根据上一行的数值填充上
g<-replace_na(X,list(X2=2))
View(g) #replace_na()又干了啥?哦~,空值填进去特定的一个数值,这里是用2来填充
doudou.txt
drop_no()

fill()

replace.na()

小抄还来-----我的大坑也随之而来

expand
###############################3. Expand Tables
####complete(把空值的位置补全)
complete(X,nesting(X1),fill = list(X2=5))
X

因为没有提供com.cvs文件,所以我模仿的花花给的截图自己建立了一个一样内容的cvs,她的数据是张这样的


花花课件里的com.csv

于是我也去csv建了一样内容名字为Potato.cvs文件


Potato.cvs

建立好后,就将Potato.cvs导入Rstudio

####进入工作目录建立一个如下cvs文件,命名为Potato.cvs,回到Rstudio继续操作
Potato <- read.csv("Potato.csv")
View(Potato) #其中有三个空值(NA),我要用ddd relate填充
Potato.csv

但是很快我就发现这个GeneId怎么是个乱码,那我就想,用之前学到的,我改一下它第一列的名字不就ok了么,于是我开始开名字

colnames(Potato)[1]<-"GeneId"
View(Potato)
修改第一列名字结果

修改后一看,不错,于com.csv,完全一致了,那么就开始进行下面的工作吧

complete(Potato,nesting(GeneId,SampleName,Expression),fill = list(Annotion="ddd relate"))
报错

我的天,怎么可能,我反复检测了所有信息,试了好多次,还是报错,头大了,我就去研究花花这步是生成了什么

花花这步的结果

她执行成功了,我和她哪里不同,这是我发现我的结果在红箭头位置是<fct>,她的是<chr>,会不会问题出在这。那我接下来就将我的所有的变量<fct>改为<chr>

class(Potato) #查看Potato类型,数据框
class(Potato[,1]) #查看Potato第一列元素类型,factor
Potato[,1]<-as.character(Potato[,1]) #将Potato第一列元素类型factor改为char
class(Potato[,1]) #再次查看Potato第一列元素类型,这次为chr了
Potato[,2]<-as.character(Potato[,2])
class(Potato[,2])
Potato[,4]<-as.character(Potato[,4])
class(Potato[,4])
View(Potato)
complete(Potato,nesting(GeneId,SampleName,Expression),fill = list(Annotion="ddd relate"))
chr了.png

得到一致结果

这一步跑通真心不易!!!!(继续往下走)

#小抄常来----expand(列出每列值所有可能的组合)
####expand列出每列值所有可能的组合
pin2<-data.frame(GeneId = rep("gene5",times=3),SampleName =paste("Sample",1:3,sep=""),Expression=c(14,19,18))
View(pin2)
expand(pin2,GeneId,SampleName,Expression)
pin2

各个元素组成新的表格

小抄天天来----split cells(一列拆成两列)

split cells
###############################4.split cells(把一列拆成两列。目测原列必须要有分隔符才行)
####合并unite
w<-data.frame(country= c("A","B","C"),`1999`= paste(c(0.7,37,212),"K"),`2000` = paste(c(2,80,213),"K"))
View(w)
unite(w,`X1999`,`X2000`,col = "`X1999`",sep = "/") #合并后的列名为X1999
#Y<-unite(w,`X1999`,`X2000`,col = "`X1999`",sep = "/")
#View(Y)
unite
####我们先合并,当做创建一个合并的数据用于后面拆分split学习
Potato_split <- read.csv("Potato_chr.csv")
View(Potato_chr)
Z<-complete(Potato,nesting(GeneId,SampleName,Expression),fill = list(Annotion="ddd relate"))
unite(Z,SampleName,Expression,Annotion,col = "Unite_information",sep = "/")
unite<-unite(Z,SampleName,Expression,Annotion,col = "Unite_information",sep = "/")
write.csv(unite,file = "unite.csv")
####开始拆分
unite_split<-read.csv("unite.csv",header =T,row.names=1)
separate(unite_split,Unite_information,into=c("xxx","yyy","zzz")) #列拆分
separate_rows(unite_split,Unite_information) #行拆分
Unite,z数据框

列拆分

行拆分

今日一导-----感谢学习小组林同学


思导
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容