首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dplyr在组会议条件中聚合行

使用dplyr在组会议条件中聚合行
EN

Stack Overflow用户
提问于 2020-06-10 15:45:00
回答 1查看 42关注 0票数 0

我有一张表格,格式如下:

代码语言:javascript
复制
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的门重新命名+级联成一个单独的类别,称为其他类别。首先,我做了以下工作:

代码语言:javascript
复制
phym %>%
  group_by(Location, Phylum) %>%
  summarise(MeanAbundance = mean(Abundance)) %>%
  mutate(Phylum = ifelse(MeanAbundance < 0.01, "Other", levels(Phylum)[Phylum]))

这将计算每个门在每个位置的平均丰度,并重新命名门,其平均丰度小于0.01。如何增强此代码以连接每个位置内的其他类别的丰度值(假设有多个不同的位置)?

EN

回答 1

Stack Overflow用户

发布于 2020-06-10 19:32:41

一种选择是按“位置”、“叶”进行分组,用mutate创建“mutate”列,然后按“位置”分组,将“MeanAbundance”连接到unique 'Phylum',其中“MeanAbundance”小于0.01为一个字符串(toSTring),类似地,转换为“Other”的级别也连接在“Phylum”中。

代码语言:javascript
复制
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

数据

代码语言:javascript
复制
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")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62307646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档