我可以计算某个值的百分比并总结每个采样日期的此信息吗?

问题描述 投票:0回答:1
日期 化合物 化合物_mg %毫克
13.1 a C21 5
13.1 b C21 4 x
13.1 c C21 9
20.2 a C21 6
20.2 b C21 5 x
20.2 c C21 10
13.1 a C23 6
13.1 b C23 6 x
13.1 c C23 10
20.2 a C23 5
20.2 b C23 4 x
20.2 c C23 9

这就是我的数据的样子,除了我希望获得的最后一列。我对三棵树(N=3)进行了采样,并从每棵树中提取了几种化合物,但在不同的日期,以了解比例如何随时间变化。

我想知道,在每个时间点,所有化合物的 C21 含量是多少 %mg。那么C21在13.1(3棵树平均)上的所有化合物中占多少比例,在20.1 aso上占多少比例。那么 C23 也是如此。

示例数据集:

Df <- data.frame(
  rating = 1:12,
  Date = c('13.1','13.1','13.1','20.2','20.2','20.2','13.1','13.1','13.1','20.2','20.2','20.2'),
  Tree = c('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c'),
  Compound = c("C21","C21","C21","C21","C21","C21","C23","C23","C23","C23","C23","C23"),
  Compound_mg = c(5, 4, 9, 6, 5, 10, 6, 6, 10, 5, 4, 9)
)

我试过这个...

Df2 <- Df %>%
group_by(Compound) %>%
mutate(perc = Compound(mg) / sum(Compound(mg))

但是我不知道如何对 3 棵树(a、b 和 c)进行平均,或者如何合并日期

r dplyr time percentage
1个回答
0
投票

library(dplyr)

Df |>
  group_by(Date, Compound) |>
  mutate(sum_c = sum(Compound_mg)) |>
  ungroup() |>
  group_by(Date) |>
  mutate(sum_d = sum(Compound_mg), perc = sum_c/sum_d) |>
  ungroup() |>
  dplyr::summarise(.by = c(Date, Compound, perc)) |>
  arrange(Date, perc)
#> # A tibble: 4 × 3
#>   Date  Compound  perc
#>   <chr> <chr>    <dbl>
#> 1 13.1  C21      0.45 
#> 2 13.1  C23      0.55 
#> 3 20.2  C23      0.462
#> 4 20.2  C21      0.538

创建于 2024 年 11 月 14 日,使用 reprex v2.1.1.9000

© www.soinside.com 2019 - 2024. All rights reserved.