R数据读取 清理生信星球培训第十一期

学习小组Day6笔记-姜洪利

2018-12-22  本文已影响30人  姜洪利_d076

一、Reshape Data

gather()spread()是一对互补命令。

gather()把多列合并成新的两列,一列“”和一列“”,“”的名,需要自己定义,"”的值是合并前的列的名字的向量,“”的名,需要自己定义,“”的值是合并前的列的值的向量。而spread()是一个反向的操作。

library(nycflights13)
smallfights <- flights[1:10, -(1:10)] 
a <- gather(smallflights, key = "dest_air_time", value = "non", dest, air_time) #字符串和数值也可以合并
str(a)
b <- spread(a, dest_air_time, non)
str(b) #注意,此时的air_time已经变成chr,非之前的num了。

二、Split Cells

separate()/separate_rows()unite()是一对互补命令,他们与gather() spread()的区别是,前者是对列内的单元格进行分解和合并,分解需要分隔符,如无分隔符,将产生NA数据。

d <- unite(smallfights, dest_air_time, dest, air_time) #不加其他参数
(e <- separate(d, dest_air_time, into = c("dest", "air_time")))

d <- unite(smallfights, dest_air_time, dest, air_time, sep = "") #无分隔符
(e <- separate(d, dest_air_time, into = c("dest", "air_time"))) #产生了NA值
(diff_d <- (unite(e, dest_air_time, dest, air_time)))

f <- spread(d, hour, minute) #两组命令的比较
(g <- gather(spread(d, hour, minute), key = "hour", value = "minute","5","6"))
(h <- gather(spread(d, hour, minute), key = "hour", value = "minute","5","6", na.rm = T))

三、Handle Missing Values

有三个函数,drop.na(), fill(), replace_na(),分别是删除空值,根据上一行的值填充空值,特定值填充空值。

X <- read.csv("doudou.csv")
X[4,1] <- NA
drop_na(X)
drop_na(X, X1)
drop_na(X, X2)
fill(X, X2)
replace_na(X, list(X1 = 2))
replace_na(X, list(X2 = 2))
replace_na(X, list(X1 = "A"))
replace_na(X, X1 = 2)

四、Expand Tables

快速生成表格,两者区别在于,complete函数不减少变量数量,通过data后面的参数(可为1-lenth()个)的组合或者nesting设置的组合,产生了新的没有出现的排列,参数里的变量已经赋值,但参数以外的值都设定为NA,fill可以对其赋值。而expand函数生成的数据的变量数目依赖于函数里变量的数量,且新产生的观测值的所有值不为NA。

complete(X, netsting(X1), fill = list(X1 = "A", X2 = 5))
pin2<-data.frame(GeneId = rep("gene5", times=3), SampleName = paste("Sample",1:3, sep=""), Expression = c(14,19,18))
(expand(pin2, GeneId, SampleName, Expression))
上一篇下一篇

猜你喜欢

热点阅读