一个 Dataframe 中多个组的Shannon索引

k2arahey  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(78)

我需要计算多个地点的多个样本的香农指数,我不知道如何去做。我用的是R,数据看起来像这样。
| 物种|计数| Count |
| --|--| ------------ |
| 鲨鱼|十七岁| 17 |
| 海豚|二十五| 25 |
| 刺鳐|1| 1 |
| 獾|二百三十四| 234 |
| 鲨鱼|四| 4 |
| 海豚|六| 6 |
| 刺鳐|十九岁| 19 |
| 獾|二十五| 25 |
| 鲨鱼|四十五| 45 |
| 海豚|四| 4 |
| 刺鳐|四| 4 |
| 獾|三个| 3 |
我觉得我需要按样本拆分一些如何,但在那之后我完全卡住了,我不经常使用R。
谢谢你的帮助!

bfrts1fy

bfrts1fy1#

您可以通过将 Dataframe 按Sample分组并应用vegan::diversity()来获取每个样本的香农索引。

df |>
    dplyr::mutate(shannon_index = vegan::diversity(Count), .by = Sample)

   Sample   Species Count shannon_index
1     17a     Shark    17     0.5511595
2     17a   Dolphin    25     0.5511595
3     17a Sting Ray     1     0.5511595
4     17a    Badger   234     0.5511595
5     17b     Shark     4     1.1609846
6     17b   Dolphin     6     1.1609846
7     17b Sting Ray    19     1.1609846
8     17b    Badger    25     1.1609846
9     18a     Shark    45     0.7095302
10    18a   Dolphin     4     0.7095302
11    18a Sting Ray     4     0.7095302
12    18a    Badger     3     0.7095302

字符串
使用的数据:

> dput(df)

structure(list(Sample = c("17a", "17a", "17a", "17a", "17b", 
"17b", "17b", "17b", "18a", "18a", "18a", "18a"), Species = c("Shark", 
"Dolphin", "Sting Ray", "Badger", "Shark", "Dolphin", "Sting Ray", 
"Badger", "Shark", "Dolphin", "Sting Ray", "Badger"), Count = c(17L, 
25L, 1L, 234L, 4L, 6L, 19L, 25L, 45L, 4L, 4L, 3L)), row.names = c(NA, 
-12L), class = "data.frame")

相关问题