R 代码 - 按组计算包含数据的列数

问题描述 投票:0回答:1

我有一个数据框,其中包含两次单独访问期间在某个地点检测到某种鸟类的次数(n=110):

   Site     Yr Total.ACFL Total.AMCR Total.AMGO Total.AMKE Total.AMRE
   <chr> <int>      <int>      <int>      <int>      <int>      <int>
 1 BRY1   2021          0          0          0          0          0
 2 BRY2   2021          0          0          3          0          0
 3 BRY2   2021          1          0          2          0          0
 4 BRY3   2021          0          0          2          0          0
 5 BRY3   2021          0          0          7          0          0
 6 BRY4   2021          0          0          1          0          0
 7 BRY4   2021          0          0          1          0          0
 8 BRY5   2021          0          0          4          0          0
 9 BRY5   2021          0          0          4          0          0
10 BRY6   2021          0          0          8          0          0

共有 56 种(以 Total. 开头的列)。我想要做的是确定每个地点的总物种丰富度(检测到的独特物种的数量)。我想生成一个脚本,通过确定每个站点至少包含一次检测的列数(例如 Total.ACFL)来实现此目的。例如,由于在两次访问期间检测到 AMGO 和 ACFL,因此站点 BRY2 的物种丰富度为 2。

任何帮助将不胜感激。

到目前为止,我还没有尝试过任何东西(坦白说,有点不知所措),但我希望能被引导到正确的方向。假设我可能会使用素食套餐来发挥我的优势。

r dataframe vegan
1个回答
0
投票

您可以首先将数据框重塑为“长”格式以便于操作,然后计算值> 0的物种数量。

library(dplyr)

df |> 
  pivot_longer(starts_with("Total")) |> 
  summarize(value = sum(value), .by = c(Site, Yr, name)) |> 
  summarize(count = sum(value > 0), .by = c(Site, Yr))

# A tibble: 6 × 3
  Site     Yr count
  <chr> <int> <int>
1 BRY1   2021     0
2 BRY2   2021     2
3 BRY3   2021     1
4 BRY4   2021     1
5 BRY5   2021     1
6 BRY6   2021     1
© www.soinside.com 2019 - 2024. All rights reserved.