美文网首页
tidyverse常见的报错

tidyverse常见的报错

作者: 萍智医信 | 来源:发表于2021-12-09 20:36 被阅读0次

1.test=head(iris),将test的前4列gather,然后还原

rm(list = ls())
library(tidyr)
library(dplyr)
test=head(iris)
test.png
x= gather(test[1:4],
          key = var,
          value = num)
x.png

因为x中红框内有重复值,所以将长型数据还原为宽型数据时会报错

test_re <- spread(data = x,
                  key = var,
                  value = num)
image.png

解决办法如下:

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

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

test.png
x=separate(test,Petal.Length,into = c('a','b'),sep = ".")
由于sep = "."中的.在R中为任意字符,故无法根据.分开向量.png
x.png

解决办法如下:

#方法一
x=separate(test,Petal.Length,into = c('a','b'),sep = "[.]")
#方法二
x=separate(test,Petal.Length,into = c('a','b'),sep = "\\.")
x.png

将上面分割的数据再合并到一起

x_re=unite(x,"abcde",a,b,sep = ",")
x_re.png

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


image.png

我们来看一下原数据


image.png
解决办法:
x_re$abcde=as.numeric(x_re$abcde)

运行后又出现报错


原因是我们之前采用的合并符号是“,”再强制转换时报错.png
这次我们将合并符号换成".",重新运行代码,成功将abcde向量由字符型转换成数值型.png

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


test.png
拆分后出现报错.png
3.0拆分后出现NA.png
数据再进行合并不会报错,但是注意红框内结果3.NA.png

解决该问题办法:

方法一
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))
image.png

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

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

4. 将两个数据框按照probe_id列连接在一起

x=merge(deg,ids,by = "probe_id")
x2=inner_join(deg,ids,by = "probe_id")
x.png

相关文章

网友评论

      本文标题:tidyverse常见的报错

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