导读
从界门纲目科属种中截取科属部分和门部分。
一、输入数据
data.txt
taxon sample_1 sample_2
k__Bacteria;p__Actinobacteria;c__Actinobacteria;o__Actinomycetales;f__Corynebacteriaceae;g__Corynebacterium 8 5
k__Bacteria;p__Firmicutes;c__Clostridia;o__Clostridiales;f__Lachnospiraceae;g__Blautia 0 0
k__Bacteria;p__Firmicutes;c__Clostridia;o__Clostridiales;f__Ruminococcaceae;g__Faecalibacterium 0 0
k__Bacteria;p__Firmicutes;c__Clostridia;o__Clostridiales;f__Lachnospiraceae;g__Coprococcus 6 1
k__Bacteria;p__Actinobacteria;c__Actinobacteria;o__Bifidobacteriales;f__Bifidobacteriaceae;g__Bifidobacterium 5 11
k__Bacteria;p__Bacteroidetes;c__Bacteroidia;o__Bacteroidales;f__Bacteroidaceae;g__Bacteroides 7 2
k__Bacteria;p__Actinobacteria;c__Coriobacteriia;o__Coriobacteriales;f__Coriobacteriaceae;g__Collinsella 3 7
k__Bacteria;p__Proteobacteria;c__Gammaproteobacteria;o__Pseudomonadales;f__Pseudomonadaceae;g__Pseudomonas 31 67
二、截取科、属、门
思路:
1 strsplit切割,切割后的结果是列表格式,用unlist转成数组
2 用paste(c(), collapse="_")把菌科菌属粘贴到一起
paste(a, b, sep="")是另一种用法
3 门信息单独提取
4 利用循环把结果收集到new_name phylum
data = read.table("data.txt", header=T, sep="\t", row.names=1)
# 提取菌门、菌科、菌属
new_name=c()
phylum=c()
for(i in 1:length(rownames(data)))
{
new_name = c(new_name, paste(unlist(strsplit(rownames(data)[i], "__|;"))[c(10, 12)], collapse="_"))
# 提取菌科菌属
phylum = c(phylum, unlist(strsplit(rownames(data)[i], "__|;"))[4])
# 提取菌门
}
菌科_菌属:
new_name
门:
phylum