1.test=head(iris),将test的前4列gather,然后还原
rm(list = ls())
library(tidyr)
library(dplyr)
test=head(iris)

x= gather(test[1:4],
key = var,
value = num)

因为x中红框内有重复值,所以将长型数据还原为宽型数据时会报错
test_re <- spread(data = x,
key = var,
value = num)

解决办法如下:
group_by(x,var)

x2 = x %>%
group_by(var) %>%
mutate(id=1:n())

x2 = x %>%
group_by(var) %>%
mutate(id=1:n()) %>%
spread(var,num)

2.将第三列分成两列(以小数点为分隔符),然后合并

x=separate(test,Petal.Length,into = c('a','b'),sep = ".")


解决办法如下:
#方法一
x=separate(test,Petal.Length,into = c('a','b'),sep = "[.]")
#方法二
x=separate(test,Petal.Length,into = c('a','b'),sep = "\\.")

将上面分割的数据再合并到一起
x_re=unite(x,"abcde",a,b,sep = ",")

但是合并后的abcde向量变成了字符型向量,而不是数值型向量

我们来看一下原数据

解决办法:
x_re$abcde=as.numeric(x_re$abcde)
运行后又出现报错


现在我们将test数据里第二列拆分,重点关注红框内数值




解决该问题办法:
方法一
x$b<-replace_na(x$b,0) #将NA替换为0
方法二
x$b[is.na(x$b)]=0
方法三:管道
x=separate(test,Sepal.Width,into = c('a','b'),sep = "[.]") %>%
tidyr::replace_na(list(b=0))

3.加载test1.Rdata,将deg数据框按照pvalue从小到大排序



load('test1.Rdata')
x=arrange(deg,P.Value);head(x)

4. 将两个数据框按照probe_id列连接在一起
x=merge(deg,ids,by = "probe_id")
x2=inner_join(deg,ids,by = "probe_id")

网友评论