【3.3.5】gsub—替换数据
gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,fixed = FALSE, useBytes = FALSE)
一、百分数的因子变为数字
得到这样一组数据,每个分类指标后面都跟有一个该指标的可信度的分数,现在就是根据这个打分,来确定保留的数据。
两种读入数据的方法写法:
方法1:
arc<-read.csv("/sam/abd/arc_classified.csv",header=TRUE,sep="\t",quote="",comment.char="#",as.is = T);
方法2:
arc<-read.csv("/sam/abd/arc_classified.csv",header=TRUE,sep="\t",quote="",comment.char="#")
read.csv的一个特性是会自动地将非数值类型的数据视为因子(factor),即分类变量。但在某些情况下,也有可能确实需要字符串,而不是因子。把as.is参数设为TRUE即可,此时R就不会将分数值数据视为因子.
comment.char="#" 忽略#的行,comment.char=""可以禁用。
str(arc$family.n) #查看数据类型
方法1读入的百分数为chr,方法2读入的百分数为factor
> str(arc$family.n)
Factor w/ 30 levels "100%","14%","21%",..: 1 1 28 22 30 5 1 1 12 1 ...
factor不可以比较,但是chr是可以比较的,但是是字符串的比较,不是数字大小的比较。
所以需要去掉%
arc$family.n<-gsub("%","",arc$family.n)
> str(arc$family.n)
chr [1:59] "100" "100" "97" "78" "99" "26" "100" "100" "52" "100" "76" "100" "87" ...
转化为数字型点的
arc$family.n<-as.numeric(arc$family.n) # as.numeric只能处理向量
> str(arc$family.n)
num [1:59] 100 100 97 78 99 26 100 100 52 100 ...
提取里面的数据
gg<-subset(arc,arc$family.n>70)
注意这里的subset出来的数据还是会保留原来数据的factor,
如果levels()的话,出来的还是原来的factor,可以重新定义其levels:
aa$phylum <- factor(aa$phylum)
二 删掉括号
R语言中的括号往往代表函数的调用,要求上下游对应,并有相应的函数作基础。然而我们在处理字符串时,往往有些作为纯符号的括号。如果不经特殊处理当然达不到预期效果。
pps$order<-sub("(class)","",pps$order);
pps$order<-gsub("\\(","",pps$order)
pps$order<-gsub("\\)","",pps$order)
正确处理:在括号位置之前加两个 \\
参考资料:
http://blog.sciencenet.cn/blog-508298-628286.html
继续感谢Qq好友猎人的指导。
这里是一个广告位,,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn