首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >新列中的计算

新列中的计算
EN

Stack Overflow用户
提问于 2021-04-13 07:10:42
回答 1查看 25关注 0票数 0

我测量了两种土壤类型的化合物在两天内的排放量。

现在我想计算一下每天丙酮和乙醛对每一种土壤类型总排放量的贡献。我想在我的数据中建立一个新的列,例如计算(丙酮排放/总排放量) *100。

有什么想法吗?

这是数据

代码语言:javascript
复制
df <- structure(list(soil_type = c("SOC<10", "SOC<10", "SOC<10", "SOC<10", 
"SOC<10", "SOC<10", "SOC>10", "SOC>10", "SOC>10", "SOC>10", "SOC>10", 
"SOC>10"), compound = c("Acetaldehyde", "Acetaldehyde", "Acetone", 
"Acetone", "Total emission", "Total emission", "Acetaldehyde", "Acetaldehyde", 
"Acetone", "Acetone", "Total emission", "Total emission"), day = c(0L, 
4L, 0L, 4L, 0L, 4L, 0L, 4L, 0L, 4L, 0L, 4L), mean = c(0.03, 0.07, 
0.02, 0.04, 0.06, 0.11, 0.01, 0.04, 0.05, 0.07, 0.08, 0.13)), row.names = c(NA, 
-12L), groups = structure(list(soil_type = c("SOC<10", "SOC<10", 
"SOC<10", "SOC>10", "SOC>10", "SOC>10"), compound = c("Acetaldehyde", 
"Acetone", "Total emission", "Acetaldehyde", "Acetone", "Total emission"
), .rows = structure(list(1:2, 3:4, 5:6, 7:8, 9:10, 11:12), ptype = integer(0), class = c("vctrs_list_of", 
"vctrs_vctr", "list"))), row.names = c(NA, -6L), class = c("tbl_df", 
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-19 08:50:53

对于每一个soil_typeday,你可以计算出丙酮发射/总排放量*100的比率。

代码语言:javascript
复制
library(dplyr)

df %>%
  group_by(soil_type, day) %>%
  mutate(ratio = mean[match('Acetone', compound)]/
                 mean[match('Total emission', compound)] * 100) %>%
  ungroup -> result

result

#   soil_type compound         day  mean ratio
#   <chr>     <chr>          <int> <dbl> <dbl>
# 1 SOC<10    Acetaldehyde       0  0.03  33.3
# 2 SOC<10    Acetaldehyde       4  0.07  36.4
# 3 SOC<10    Acetone            0  0.02  33.3
# 4 SOC<10    Acetone            4  0.04  36.4
# 5 SOC<10    Total emission     0  0.06  33.3
# 6 SOC<10    Total emission     4  0.11  36.4
# 7 SOC>10    Acetaldehyde       0  0.01  62.5
# 8 SOC>10    Acetaldehyde       4  0.04  53.8
# 9 SOC>10    Acetone            0  0.05  62.5
#10 SOC>10    Acetone            4  0.07  53.8
#11 SOC>10    Total emission     0  0.08  62.5
#12 SOC>10    Total emission     4  0.13  53.8
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67070238

复制
相关文章

相似问题

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