R,如何基于bin过滤数据帧并获得未知长度的每列的总和/计数?

  • 本文关键字:计数 未知 bin 何基于 过滤 数据帧 r
  • 更新时间 :
  • 英文 :


我有一个物种丰富度和几个环境变量的数据框架,我已经将其分类并创建了一个"分类列"。我正在努力获得每个箱子中每个物种的丰度总和。我看到许多使用tidyverse的R示例,但似乎都使用了列的实际名称——我有几个数据框架,其中一些有数百个物种名称,我不想键入。

dataframe例子:

head(data)  binned     Acanthamorpha    Belonidae   Blenoids
Site1_1       1           0               2           3
Site2_2       2           2               3           0
Site3_1       1           5               1           0
Site4_3       3           0               0           0
Site3_2       2           0               3           0

我用bin值标记站点名称只是为了稍后的可视化目的,但本质上我想创建一个更小的数据框架,如下所示:

bin    Acanthamorpha    Belonidae   Blenoids
1          2               3          3
2          4               6          0
3          3               0          0

我把tidyverses filter/mutate/groupby搞混了。

我已经尝试了很多次,但似乎真的无法通过按bin值组织所有行:

data %>% filter(binned == 1) %>% gather(binned) %>% ???

但是这里的错误还在于调用每个值为binned。我确信有一种方法可以通过垃圾箱打破数据框,然后只需将每个物种的总和作为新行,然后将所有这些行(共5行)保存为新的数据框,但我无法让它与我的任何方法一起工作。

这是你想要的吗?

library(tidyverse)
# Reproducing your data
df1 <- tibble(
binned = c(1, 2, 1, 3, 2),
Acanthamorpha = c(0, 2, 5, 0, 0),
Belonidae = c(2, 3, 1, 0, 3),
Blenoids = c(3, 0, 0, 0, 0)
)
df1 %>% 
group_by(binned) %>%
summarise_all(sum)

输出:

# A tibble: 3 x 4
binned Acanthamorpha Belonidae Blenoids
<dbl>         <dbl>     <dbl>    <dbl>
1      1             5         3        3
2      2             2         6        0
3      3             0         0        0

最新更新