Допустим, ваши данные находятся в data.frame DF
DF <- read.table(textConnection(
"Acidobacteria 47
Actinobacteria 497
Apicomplexa 7
Aquificae 16
Arthropoda 26
Ascomycota 101
Bacillariophyta 1
Bacteroidetes 50279"), stringsAsFactors=FALSE)
names(DF) <- c("Species","Count")
Затем вы можете определить, какие виды входят в топ-5, по
top5Species <- DF[rev(order(DF$Count)),"Species"][1:5]
Каждый из наборов данныхзатем может быть преобразовано в эти 5 и «Другое» с помощью
DF$Group <- ifelse(DF$Species %in% top5Species, DF$Species, "Other")
DF$Group <- factor(DF$Group, levels=c(top5Species, "Other"))
DF.summary <- ddply(DF, .(Group), summarise, total=sum(Count))
DF.summary$prop <- DF.summary$total / sum(DF.summary$total)
Если сделать Group
фактором, то все они останутся в том же порядке в DF.summary
(от наибольшего к наименьшему в первом наборе данных).
Затем вы просто соединяете их и наносите их на карту, как в своем примере.