Damage vector for life-cycle analysis: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
(→Formula: small adjustments) |
||
Line 53: | Line 53: | ||
===Formula=== | ===Formula=== | ||
<rcode graphics= | <rcode graphics=1> | ||
library(OpasnetUtils) | library(OpasnetUtils) | ||
library(xtable) | library(xtable) | ||
library(ggplot2) | library(ggplot2) | ||
library( | library(reshape2) | ||
show_bins <- 10 # How many different direct inputs to show? | |||
# Take the damage factor table from this page. | # Take the damage factor table from this page. | ||
Line 75: | Line 75: | ||
colnames(damagesPerImpact) <- gsub("Result.", "", colnames(damagesPerImpact)) # Remove extra "Result." from colnames. | colnames(damagesPerImpact) <- gsub("Result.", "", colnames(damagesPerImpact)) # Remove extra "Result." from colnames. | ||
rownames(damagesPerImpact) <- damagesPerImpact[[1]] # Make the first column the rownames. | rownames(damagesPerImpact) <- damagesPerImpact[[1]] # Make the first column the rownames. | ||
damagesPerImpact <- | damagesPerImpact[1] <- NULL # Remove the first column. | ||
oprint(damagesPerImpact) | |||
damagesPerImpact <- t(as.matrix(damagesPerImpact)) # Turn the data.frame into a matrix and transpose it. | damagesPerImpact <- t(as.matrix(damagesPerImpact)) # Turn the data.frame into a matrix and transpose it. | ||
Line 90: | Line 93: | ||
colnames(impactsPerDollar) <- gsub("Result.", "", colnames(impactsPerDollar)) | colnames(impactsPerDollar) <- gsub("Result.", "", colnames(impactsPerDollar)) | ||
rownames(impactsPerDollar) <- impactsPerDollar[[1]] | rownames(impactsPerDollar) <- impactsPerDollar[[1]] | ||
impactsPerDollar <- | impactsPerDollar[1] <- NULL | ||
#oprint(impactsPerDollar) | |||
impactsPerDollar <- as.matrix(impactsPerDollar) | impactsPerDollar <- as.matrix(impactsPerDollar) | ||
Line 96: | Line 102: | ||
coffee <- opbase.data("Op_en5902.coffeecupinputs") # Download the data from Opasnet Base. | coffee <- opbase.data("Op_en5902.coffeecupinputs") # Download the data from Opasnet Base. | ||
coffee <- | coffee$Obs <- NULL # Remove the redundant Obs column. | ||
cat("Primary prosesses related to a cup of coffee (in Euro)\n") | cat("Primary prosesses related to a cup of coffee (in Euro)\n") | ||
oprint(coffee) | |||
# Combine the direct requirements of a coffee cup with a full vector of requirements and fill empty cells with 0. | # Combine the direct requirements of a coffee cup with a full vector of requirements and fill empty cells with 0. | ||
coffee <- merge(data.frame(directRequirements = rownames(impactsPerDollar)), coffee, all.x = TRUE) | coffee <- merge(data.frame(directRequirements = rownames(impactsPerDollar)), coffee, all.x = TRUE) | ||
coffee$Result | coffee$Result[is.na(coffee$Result)] <- 0 | ||
# Get the normalisation data for different damages and make an ovariable out of it. | # Get the normalisation data for different damages and make an ovariable out of it. | ||
temp <- tidy(opbase.data("Op_en5904"), objname="normalisation") | # temp <- tidy(opbase.data("Op_en5904"), objname="normalisation") | ||
temp <- | temp <- opbase.data("Op_en5904") | ||
temp$Obs <- NULL | |||
normalisation <- EvalOutput(new("ovariable", | normalisation <- EvalOutput(new("ovariable", | ||
Line 116: | Line 122: | ||
data = temp | data = temp | ||
)) | )) | ||
oprint(normalisation@data) | |||
impactsPerDollar <- impactsPerDollar * coffee$Result # Multiply data matrix with activities. | impactsPerDollar <- impactsPerDollar * coffee$Result # Multiply data matrix with activities. | ||
Line 127: | Line 135: | ||
out$directRequirements <- rownames(out) | out$directRequirements <- rownames(out) | ||
out <- melt(out, idvars = "directRequirements", variable_name = "damages") # Reshape into long format | out <- melt(out, idvars = "directRequirements", variable_name = "damages") # Reshape into long format | ||
out <- out[out$value >= sum(out$value) * limit , ] # Remove all rows with smaller values than the limit. | |||
sums <- as.data.frame(as.table(tapply(out$value, out["directRequirements"], sum))) | |||
limit <- sort(sums$Freq, decreasing = TRUE)[show_bins] | |||
keeps <- sums[sums$Freq > limit , "directRequirements"] | |||
out$directRequirements <- as.factor(ifelse(out$directRequirements %in% keeps, out$directRequirements, "Other")) | |||
#out <- out[out$value >= sum(out$value) * limit , ] # Remove all rows with smaller values than the limit. | |||
out <- dropall(out) | out <- dropall(out) | ||
# Alternative approach: very small values of B are merged to "Other" category in A: temp$A as.factor(ifelse(temp$B <= 6, "Other", temp$A)) | |||
# Rename the columns to reflect actual things. | # Rename the columns to reflect actual things. | ||
Line 142: | Line 158: | ||
cat("Effects smaller than", limit*100, "% of the total effect are not shown.\n") | cat("Effects smaller than", limit*100, "% of the total effect are not shown.\n") | ||
ggplot(damageFractions@output, aes(x = | #oprint(damageFractions) | ||
ggplot(damageFractions@output, aes(x = Damage, weight = Result, fill = directRequirements)) + geom_bar() + | |||
theme_grey(base_size = 24) + | theme_grey(base_size = 24) + | ||
theme(axis.text.x = element_text(angle = 45)) + | theme(axis.text.x = element_text(angle = 45)) + |
Revision as of 21:19, 23 December 2013
Moderator:Nobody (see all) Click here to sign up. |
This page is a stub. You may improve it into a full page. |
Upload data
|
Question
What are the damages per unit purchased commodity using a life-cycle assessment?
Answer
Rationale
Dependencies
Data
Obs | Unique_categories | Human health | Ecosystem quality | Climate change | Resources | Water consumption |
---|---|---|---|---|---|---|
1 | Carcinogens | 0.0000028 | 0 | 0 | 0 | 0 |
2 | Non-carcinogens | 0.0000028 | 0 | 0 | 0 | 0 |
3 | Respiratory inorganics | 0.0007 | 0 | 0 | 0 | 0 |
4 | Ionizing radiation | 0.00000000021 | 0 | 0 | 0 | 0 |
5 | Ozone layer depletion | 0.00105 | 0 | 0 | 0 | 0 |
6 | Respiratory organics | 0.00000213 | 0 | 0 | 0 | 0 |
7 | Aquatic ecotoxicity | 0 | 0.0000502 | 0 | 0 | 0 |
8 | Terrestrial ecotoxicity | 0 | 0.00791 | 0 | 0 | 0 |
9 | Terrestrial acidification/nutrification | 0 | 1.04 | 0 | 0 | 0 |
10 | Land occupation | 0 | 1.09 | 0 | 0 | 0 |
11 | Aquatic acidification | 0 | 0 | 0 | 0 | 0 |
12 | Aquatic eutrophication | 0 | 0 | 0 | 0 | 0 |
13 | Global warming | 0 | 0 | 1 | 0 | 0 |
14 | Non-renewable energy | 0 | 0 | 0 | 1 | 0 |
15 | Mineral extraction | 0 | 0 | 0 | 1 | 0 |
16 | Water withdrawal | 0 | 0 | 0 | 0 | 0 |
17 | Water consumption | 0 | 0 | 0 | 0 | 1 |
Example of coffee cup
Obs | directRequirements | Result |
---|---|---|
1 | 31131A - Sugar cane mills and refining | 0.1 |
2 | 112120 - Dairy cattle and milk production | 0.2 |
3 | 311820 - Cookie, cracker, and pasta manufacturing | 0.5 |
4 | 311920 - Coffee and tea manufacturing | 0.2 |
5 | 221100 - Electric power generation, transmission, and distribution | 0.1 |
6 | 322299 - All other converted paper product manufacturing | 0.04 |
7 | 335210 - Small electrical appliance manufacturing | 0 |
8 | 335221 - Household cooking appliance manufacturing | 0.01 |
Formula
See also
Keywords
References
Related files
<mfanonymousfilelist></mfanonymousfilelist>