【发布时间】:2020-03-02 11:23:44
【问题描述】:
我有以下数据框(子集):
kingdom phylum class order family genus
1 Bacteria unknown unknown unknown unknown unknown
2 Bacteria Firmicutes Bacilli Bacillales Bacillaceae Bacillus
3 Bacteria unknown unknown unknown unknown unknown
4 Bacteria Firmicutes Bacilli Bacillales Listeriaceae Listeria
5 Bacteria unknown unknown unknown unknown unknown
6 Bacteria Firmicutes Bacilli Bacillales Bacillaceae Bacillus
7 unknown unknown unknown unknown unknown unknown
tax <- structure(list(kingdom = c("Bacteria", "Bacteria", "Bacteria",
"Bacteria", "Bacteria", "Bacteria", "unknown", "Bacteria", "Bacteria",
"Bacteria"), phylum = c("unknown", "Firmicutes", "unknown", "Firmicutes",
"unknown", "Firmicutes", "unknown", "Firmicutes", "Firmicutes",
"Firmicutes"), class = c("unknown", "Bacilli", "unknown", "Bacilli",
"unknown", "Bacilli", "unknown", "Bacilli", "Bacilli", "Bacilli"
), order = c("unknown", "Bacillales", "unknown", "Bacillales",
"unknown", "Bacillales", "unknown", "Bacillales", "Bacillales",
"Bacillales"), family = c("unknown", "Bacillaceae", "unknown",
"Listeriaceae", "unknown", "Bacillaceae", "unknown", "Bacillaceae",
"Bacillaceae", "Staphylococcaceae"), genus = c("unknown", "Bacillus",
"unknown", "Listeria", "unknown", "Bacillus", "unknown", "Bacillus",
"Bacillus", "Staphylococcus"), species = c("uncultured bacterium",
"Bacillus subtilis", "unknown", "Listeria monocytogenes", "uncultured bacterium",
"Bacillus subtilis", "metagenome", "Bacillus subtilis", "Bacillus subtilis",
"Staphylococcus aureus")), row.names = c(NA, 10L), class = "data.frame")
cols <- colnames(tax)
每一行都可以重复,所以我按如下方式计算唯一行并为每一行添加一个频率:
df2 <- tax %>%
group_by(.dots=cols) %>%
summarise(counts = n()) %>%
mutate(relative_abundance=( counts/sum(counts)))
> df2
# A tibble: 6 x 9
# Groups: kingdom, phylum, class, order, family, genus [5]
kingdom phylum class order family genus species counts relative_abunda…
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <int> <dbl>
1 Bacteria Firmicu… Bacil… Bacilla… Bacillaceae Bacillus Bacillus sub… 4 1
2 Bacteria Firmicu… Bacil… Bacilla… Listeriace… Listeria Listeria mon… 1 1
3 Bacteria Firmicu… Bacil… Bacilla… Staphyloco… Staphyl… Staphylococc… 1 1
4 Bacteria unknown unkno… unknown unknown unknown uncultured b… 2 0.667
5 Bacteria unknown unkno… unknown unknown unknown unknown 1 0.333
6 unknown unknown unkno… unknown unknown unknown metagenome 1 1
我期待独特的行,每个细菌/未知的百分比在 0 到 100 之间。怎么了??
例如,我们总共有 4 株枯草芽孢杆菌。计数总和为 10。所以 4/10*100=40%
【问题讨论】:
-
在总结之后尝试取消组合