美文网首页R语言与统计分析
tidyverse包进行R语言数据清洗

tidyverse包进行R语言数据清洗

作者: 灵活胖子的进步之路 | 来源:发表于2020-12-20 00:02 被阅读0次

这次用的包是要是tidyverse包,安装不上tidyverse包,可以安装tidyr包。

熊老师其实还是建议家直接装 tidyverse 包,这是个各种包的合集,里面还包括了 ggplot2 等。不过有可能安不上 tidyverse , 如果安装有问题,欢迎大家在下面提出问题。

版权归生信技能树的老师哈,用的代码和测试数据集均来自与生信技能树的生信全书:生物统计从理论到实践,具体链接在https://www.yuque.com/biotrainee/biostat

gather 函数的使用非常方便,可以把宽的数据转换成长数据
你只需要指定你转换后的 key 那列的列名,value 那列的列名,以及你需要转成长数据的那几列。我们以 test2 为例。

library(tidyverse)

# 使用gahter转换数据集
df <- read.table("test2.txt",header = T,stringsAsFactors = F)
str(df)
head(df)
原始数据集结构及样式
df_long <- gather(df, #原始数据集
                  key = "Treatment_dose",#新数据集第一列名(分组信息)
                  value = "survive_time",#新数据集第二列名(数据信息)
                  control, low, middle, high)#需要提取的数据集的列名
str(df_long)
head(df_long)
转换后数据集

其实我们常见的位列名为样本名,行名为基因名的数据集,下部构建此数据集

ndf <- df#取原数据集新建一个数据集
rownames(ndf) <- paste0("gene",1:15)#定义新数据集的行名(循环补齐)
colnames(ndf) <- paste0("patient",1:4)#定义新数据集的列名
str(ndf)
ndf[1:4,]
新数据集符合一般习惯,行名为基因名,列名为样本名
ndf_long <- gather(ndf, #原始数据集
                  key = "patient group",#新数据集第一列名(分组信息)
                  value = "gene expression",#新数据集第二列名(数据信息)
                  colnames(ndf))#需要提取的数据集的列名
str(ndf_long)
head(ndf_long)
转换后的长数据集缺失了基因编号信息

可以看到,转换后的长数据集缺失了基因编号信息,下步在新数据集中重新构建一列内容gene.name加上基因信息

ndf_long$gene.name<- rep(rownames(ndf),ncol(ndf))
ndf_long[1:6,]
重新构建基因名列
newdata<- ndf_long[,c(1,3,2)]#重新排序
newdata[1:6,]
最终结果

相关文章

网友评论

    本文标题:tidyverse包进行R语言数据清洗

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