我有一张表格,格式如下:
Sample Location Phylum Abundance
1 Teat canal Firmicutes 0.34
1 Teat canal Actinobacteria 0.26
1 Teat canal Candidatus 0.001
1 Teat canal Chloroflexi 0.001
2 Teat canal Firmicutes 0.30
2 Teat canal Actinobacteria 0.24
2 Teat canal Apicomplexa 0.005
2 Teat canal Chloroflexi 0.001我想要(1)计算每个门在每个位置上的平均丰度;(2)将平均丰度小于0.01的门重新命名+级联成一个单独的类别,称为其他类别。首先,我做了以下工作:
phym %>%
group_by(Location, Phylum) %>%
summarise(MeanAbundance = mean(Abundance)) %>%
mutate(Phylum = ifelse(MeanAbundance < 0.01, "Other", levels(Phylum)[Phylum]))这将计算每个门在每个位置的平均丰度,并重新命名门,其平均丰度小于0.01。如何增强此代码以连接每个位置内的其他类别的丰度值(假设有多个不同的位置)?
发布于 2020-06-10 19:32:41
一种选择是按“位置”、“叶”进行分组,用mutate创建“mutate”列,然后按“位置”分组,将“MeanAbundance”连接到unique 'Phylum',其中“MeanAbundance”小于0.01为一个字符串(toSTring),类似地,转换为“Other”的级别也连接在“Phylum”中。
library(dplyr)
phym %>%
group_by(Location, Phylum) %>%
mutate(MeanAbundance = mean(Abundance)) %>%
group_by(Location) %>%
summarise(Othergroup = toString(unique(Phylum[MeanAbundance < 0.01])),
Phylum = toString(unique(ifelse(MeanAbundance < 0.01,
"Other", levels(Phylum)[Phylum]))))
# A tibble: 1 x 3
#Location Othergroup Phylum
# <chr> <chr> <chr>
#1 Teat canal Candidatus, Chloroflexi, Apicomplexa Firmicutes, Actinobacteria, Other数据
phym <- structure(list(Sample = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L),
Location = c("Teat canal",
"Teat canal", "Teat canal", "Teat canal", "Teat canal", "Teat canal",
"Teat canal", "Teat canal"), Phylum = structure(c(5L, 1L, 3L,
4L, 5L, 1L, 2L, 4L), .Label = c("Actinobacteria", "Apicomplexa",
"Candidatus", "Chloroflexi", "Firmicutes"), class = "factor"),
Abundance = c(0.34, 0.26, 0.001, 0.001, 0.3, 0.24, 0.005,
0.001)), row.names = c(NA, -8L), class = "data.frame")https://stackoverflow.com/questions/62307646
复制相似问题