10.tidyverse-tidyr(1)

2021-11-19  本文已影响0人  萍智医信

tidyr核心函数

rm(list = ls())
options(stringsAsFactors = F)
if(!require(tidyr))install.packages("tidyr")
library(tidyr)

一、数据清理

# 原始数据
test <- data.frame(geneid = paste0("gene",1:4),
                 sample1 = c(1,4,7,10),
                 sample2 = c(2,5,0.8,11),
                 sample3 = c(0.3,6,9,12))
test
test.png
### 宽变长
test_gather <- gather(data = test,
                    key = sample_nm,   #将sample重新形成新向量并命名sample_nm
                    value = exp    #将test数据框里的表达数据形成新向量并命名exp
                  )
head(test_gather)
test_gather.png
test_gather <- gather(data = test,
                    key = sample_nm,   #将sample重新形成新向量并命名sample_nm
                    value = exp,    #将test数据框里的表达数据形成新向量并命名exp
                    - geneid)
head(test_gather)
test_gather.png
### 长变宽

test_re <- spread(data = test_gather,
                key = sample_nm,
                value = exp)
head(test_re)
test_re.png

二、分割和合并

### 原始数据
test <- data.frame(x = c( "a,b", "a,d", "b,c"));test
test.png
### 分割
test_seprate <- separate(test,x, c("X", "Y"),sep = ",");test_seprate
test_seprate.png
### 合并
test_re <- unite(test_seprate,"aaa",X,Y,sep = ":");test_re
image.png

三、处理NA

### 原始数据
X<-data.frame(X1 = LETTERS[1:5],X2 = 1:5)
X.png
X[2,2] <- NA
X[4,1] <- NA
X.png
### 1.去掉含有NA的行,可以选择只根据某一列来去除
drop_na(X)
drop_na(X).png
drop_na(X,X1)
drop_na(X,X1).png
drop_na(X,X2)
drop_na(X,X2).png
### 2.替换NA
####方法1
X$X2[is.na(X$X2)]<-66
image.png
####方法2
replace_na(X$X2,0)
image.png
### 3.用上一行的值填充NA
X
fill(X,X2)
image.png

完整操作,查看小抄
RStudio Cheatsheets - RStudio

上一篇 下一篇

猜你喜欢

热点阅读