Это повторяющаяся у меня проблема. Часть моего набора данных:
L2 L1 unc.max unc.min emi.agg
1 1.A CH4 0.98020864 0.98010294 375913.3
2 1.A CO2 0.06519989 0.06415013 28983572.2
3 1.A N2O 8.10874574 2.38907240 289785.2
4 1.B CH4 0.92234486 0.53458320 2942328.1
5 1.B CO2 0.44141252 0.44093830 580784.1
6 1.A sumGHG 0.15541677 0.09848645 29649270.7
7 1.B sumGHG 0.84306330 0.51914587 3523112.2
Мне нужно для каждой группы, определенной L2
(таким образом, 1.A
и 1.B
), чтобы выполнить некоторые операции между CH4
, CO2
, N2O
elements и соответствующий sumGHG
элемент. Например, я хотел бы создать новый столбец, чтобы первая строка была произведением unc.max*emi.agg
этой строки, деленного на unc.max*emi.agg
строки sumGHG
, соответствующей тому же L2
. Тогда первая строка будет:
0,98020864 * 375913,3 / 0,15541677 * 29649270,7
вторая будет:
0,06519989 * 28983572.2 / 0,15541677 * 29649270,7
и так далее. строки, соответствующие sumGHG
, будут равны единице. Не могу понять, какие трубы работают! Данные:
structure(list(L2 = c("1.A", "1.A", "1.A", "1.B", "1.B", "1.A",
"1.B"), L1 = c("CH4", "CO2", "N2O", "CH4", "CO2", "sumGHG", "sumGHG"
), unc.max = c(0.980208638698309, 0.0651998890654749, 8.1087457367104,
0.922344859797637, 0.441412519786308, 0.155416769067452, 0.843063296024141
), unc.min = c(0.980102941492096, 0.0641501300870636, 2.38907239683858,
0.534583203757245, 0.440938301221688, 0.0984864542571333, 0.519145867369634
), emi.agg = c(375913.308161253, 28983572.1535152, 289785.223284676,
2942328.10140511, 580784.071175234, 29649270.6849611, 3523112.17258035
)), row.names = c(NA, -7L), class = "data.frame")