The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
The dairy industry plays a crucial role in global food security, but it also contributes significantly to greenhouse gas emissions. Understanding and quantifying the environmental impact of dairy production is essential for sustainable development and climate change mitigation.
The cowfootR package provides a comprehensive toolkit for calculating dairy farm carbon footprints following internationally recognized standards, specifically the International Dairy Federation (IDF) 2022 guidelines and IPCC 2019 methodologies.
This vignette is designed as a step-by-step tutorial for new users of cowfootR. It introduces the concepts of dairy life cycle assessment (LCA) and demonstrates how to calculate greenhouse gas emissions for a single farm.
You can: - Read it sequentially as a guided example, or - Jump directly to the sections of interest (e.g., emissions, intensities, or visualization).
All examples use simplified, hypothetical data intended for learning purposes.
Life Cycle Assessment (LCA) is a systematic approach to evaluating the environmental impacts of a product or service throughout its entire life cycle. In dairy production, LCA helps quantify greenhouse gas emissions from various sources within the farm system.
Dairy farm emissions primarily originate from five main sources:
System boundaries define which processes are included in the assessment:
Results are expressed using functional units that allow meaningful comparisons:
Most cowfootR functions expect farm information either
as: - Individual numeric arguments (e.g. number of animals, litres of
milk), or - A structured list containing farm characteristics.
In this vignette, we use a simple list (farm_data) to
keep all farm-related information together. This approach improves
readability and makes it easier to reuse the same data across multiple
calculation steps.
Most emission functions return a list containing: - Total emissions for that source (kg CO₂eq) - A breakdown by gas or process - Metadata describing the calculation method
The typical cowfootR workflow involves four main steps:
The following information is required to run the core cowfootR functions and perform a basic farm-level carbon footprint assessment:
Providing additional farm-specific information improves the accuracy and interpretability of results:
If some optional data are not available, cowfootR applies default values based on IPCC and IDF guidance. However, users are encouraged to provide farm-specific data whenever possible.
Let’s walk through a simple example:
For this example, we’ll use data from a typical dairy farm:
# Farm characteristics
farm_data <- list(
# Herd composition
dairy_cows = 100,
heifers = 30,
calves = 25,
# Production
milk_litres = 600000, # Annual milk production
milk_yield_per_cow = 6000, # kg/cow/year
# Farm area
total_area_ha = 120,
productive_area_ha = 110,
# Inputs
concentrate_kg = 180000, # Annual concentrate use
n_fertilizer_kg = 1500, # Nitrogen fertilizer
diesel_litres = 8000, # Annual diesel consumption
electricity_kwh = 35000 # Annual electricity use
)
farm_data
#> $dairy_cows
#> [1] 100
#>
#> $heifers
#> [1] 30
#>
#> $calves
#> [1] 25
#>
#> $milk_litres
#> [1] 6e+05
#>
#> $milk_yield_per_cow
#> [1] 6000
#>
#> $total_area_ha
#> [1] 120
#>
#> $productive_area_ha
#> [1] 110
#>
#> $concentrate_kg
#> [1] 180000
#>
#> $n_fertilizer_kg
#> [1] 1500
#>
#> $diesel_litres
#> [1] 8000
#>
#> $electricity_kwh
#> [1] 35000Now we calculate emissions from each source using the individual calculation functions:
Enteric fermentation is typically the largest source of emissions in
dairy systems. The function calc_emissions_enteric()
estimates methane emissions from ruminal fermentation based on animal
numbers, productivity, and the selected IPCC Tier.
In this example, we use Tier 2 to incorporate milk yield into the calculation.
# Calculate enteric methane emissions
enteric_emissions <- calc_emissions_enteric(
n_animals = farm_data$dairy_cows,
cattle_category = "dairy_cows",
avg_milk_yield = farm_data$milk_yield_per_cow,
tier = 2, # Use Tier 2 for more accurate results
boundaries = boundaries
)
enteric_emissions
#> $source
#> [1] "enteric"
#>
#> $category
#> [1] "dairy_cows"
#>
#> $production_system
#> [1] "mixed"
#>
#> $ch4_kg
#> [1] 9429.19
#>
#> $co2eq_kg
#> [1] 256474
#>
#> $units_ch4
#> [1] "kg CH4 yr-1"
#>
#> $units_co2eq
#> [1] "kg CO2eq yr-1"
#>
#> $emission_factors
#> $emission_factors$emission_factor_ch4
#> [1] 94.292
#>
#> $emission_factors$ym_percent
#> [1] 6.5
#>
#> $emission_factors$gwp_ch4
#> [1] 27.2
#>
#> $emission_factors$method_used
#> [1] "Tier 2"
#>
#>
#> $inputs
#> $inputs$n_animals
#> [1] 100
#>
#> $inputs$avg_body_weight
#> [1] 550
#>
#> $inputs$avg_milk_yield
#> [1] 6000
#>
#> $inputs$dry_matter_intake
#> NULL
#>
#> $inputs$feed_inputs
#> NULL
#>
#> $inputs$tier
#> [1] 2
#>
#>
#> $methodology
#> [1] "IPCC Tier 2 (GE-based where possible)"
#>
#> $standards
#> [1] "IPCC 2019 Refinement, IDF 2022"
#>
#> $date
#> [1] "2026-01-13"
#>
#> $per_animal
#> $per_animal$ch4_kg
#> [1] 94.292
#>
#> $per_animal$co2eq_kg
#> [1] 2564.741
#>
#> $per_animal$milk_intensity_kg_co2eq_per_kg_milk
#> [1] 0.4275Manure management emissions include both methane (CH₄) and nitrous
oxide (N₂O) released during manure storage, handling, and application.
The function calc_emissions_manure() estimates these
emissions based on the number of animals, manure management system, and
the selected IPCC Tier.
Here, a pasture-based manure system is assumed, which is common in extensive and mixed dairy systems.
# Calculate manure management emissions
manure_emissions <- calc_emissions_manure(
n_cows = farm_data$dairy_cows,
manure_system = "pasture", # Typical for extensive systems
tier = 2,
include_indirect = TRUE,
boundaries = boundaries
)
manure_emissions
#> $source
#> [1] "manure"
#>
#> $system
#> [1] "pasture"
#>
#> $tier
#> [1] 2
#>
#> $climate
#> [1] "temperate"
#>
#> $ch4_kg
#> [1] 2139.32
#>
#> $n2o_direct_kg
#> [1] 314.29
#>
#> $n2o_indirect_kg
#> [1] 57.75
#>
#> $n2o_total_kg
#> [1] 372.04
#>
#> $co2eq_kg
#> [1] 159755.4
#>
#> $units
#> $units$ch4_kg
#> [1] "kg CH4 yr-1"
#>
#> $units$n2o_kg
#> [1] "kg N2O yr-1"
#>
#> $units$co2eq_kg
#> [1] "kg CO2eq yr-1"
#>
#>
#> $emission_factors
#> $emission_factors$ef_ch4
#> [1] NA
#>
#> $emission_factors$ef_n2o_direct
#> [1] 0.02
#>
#> $emission_factors$gwp_ch4
#> [1] 27.2
#>
#> $emission_factors$gwp_n2o
#> [1] 273
#>
#>
#> $inputs
#> $inputs$n_cows
#> [1] 100
#>
#> $inputs$n_excreted
#> [1] 100
#>
#> $inputs$manure_system
#> [1] "pasture"
#>
#> $inputs$include_indirect
#> [1] TRUE
#>
#> $inputs$avg_body_weight
#> [1] 600
#>
#> $inputs$diet_digestibility
#> [1] 0.65
#>
#> $inputs$retention_days
#> NULL
#>
#> $inputs$system_temperature
#> NULL
#>
#>
#> $methodology
#> [1] "IPCC Tier 2 (VS_B0_MCF calculation)"
#>
#> $standards
#> [1] "IPCC 2019 Refinement, IDF 2022"
#>
#> $date
#> [1] "2026-01-13"
#>
#> $per_cow
#> $per_cow$ch4_kg
#> [1] 21.3932
#>
#> $per_cow$n2o_kg
#> [1] 3.720357
#>
#> $per_cow$co2eq_kg
#> [1] 1597.553
#>
#> $per_cow$units
#> $per_cow$units$ch4_kg
#> [1] "kg CH4 yr-1"
#>
#> $per_cow$units$n2o_kg
#> [1] "kg N2O yr-1"
#>
#> $per_cow$units$co2eq_kg
#> [1] "kg CO2eq yr-1"
#>
#>
#>
#> $tier2_details
#> $tier2_details$vs_kg_per_day
#> [1] 32.4
#>
#> $tier2_details$b0_used
#> [1] 0.18
#>
#> $tier2_details$mcf_used
#> [1] 1.5Soil-related emissions are mainly associated with nitrous oxide (N₂O)
released from nitrogen inputs to agricultural soils. The function
calc_emissions_soil() estimates direct and indirect soil
N₂O emissions resulting from synthetic fertilizers and animal excreta
deposited on pasture.
This example uses generalized assumptions for soil type and climate, which can be refined when site-specific information is available.
# Calculate soil N2O emissions
soil_emissions <- calc_emissions_soil(
n_fertilizer_synthetic = farm_data$n_fertilizer_kg,
n_excreta_pasture = farm_data$dairy_cows * 100, # Estimated N excretion
area_ha = farm_data$total_area_ha,
soil_type = "well_drained",
climate = "temperate",
include_indirect = TRUE,
boundaries = boundaries
)
soil_emissions
#> $source
#> [1] "soil"
#>
#> $units
#> $units$n2o_kg
#> [1] "kg N2O yr-1"
#>
#> $units$co2eq_kg
#> [1] "kg CO2eq yr-1"
#>
#>
#> $soil_conditions
#> $soil_conditions$soil_type
#> [1] "well_drained"
#>
#> $soil_conditions$climate
#> [1] "temperate"
#>
#>
#> $nitrogen_inputs
#> $nitrogen_inputs$synthetic_fertilizer_kg_n
#> [1] 1500
#>
#> $nitrogen_inputs$organic_fertilizer_kg_n
#> [1] 0
#>
#> $nitrogen_inputs$excreta_pasture_kg_n
#> [1] 10000
#>
#> $nitrogen_inputs$crop_residues_kg_n
#> [1] 0
#>
#> $nitrogen_inputs$total_kg_n
#> [1] 11500
#>
#>
#> $emissions_breakdown
#> $emissions_breakdown$direct_n2o_kg
#> [1] 180.714
#>
#> $emissions_breakdown$indirect_volatilization_n2o_kg
#> [1] 33.786
#>
#> $emissions_breakdown$indirect_leaching_n2o_kg
#> [1] 40.661
#>
#> $emissions_breakdown$total_indirect_n2o_kg
#> [1] 74.446
#>
#> $emissions_breakdown$total_n2o_kg
#> [1] 255.161
#>
#>
#> $co2eq_kg
#> [1] 69658.88
#>
#> $emission_factors
#> $emission_factors$ef_direct
#> [1] 0.01
#>
#> $emission_factors$ef_volatilization
#> [1] 0.01
#>
#> $emission_factors$ef_leaching
#> [1] 0.0075
#>
#> $emission_factors$gwp_n2o
#> [1] 273
#>
#> $emission_factors$factors_source
#> [1] "IPCC-style defaults (temperate, well_drained)"
#>
#>
#> $methodology
#> [1] "Tier 1-style (direct + indirect)"
#>
#> $standards
#> [1] "IPCC 2019 Refinement, IDF 2022"
#>
#> $date
#> [1] "2026-01-13"
#>
#> $per_hectare_metrics
#> $per_hectare_metrics$n_input_kg_per_ha
#> [1] 95.8
#>
#> $per_hectare_metrics$n2o_kg_per_ha
#> [1] 2.126
#>
#> $per_hectare_metrics$co2eq_kg_per_ha
#> [1] 580.49
#>
#> $per_hectare_metrics$emission_intensity_kg_co2eq_per_kg_n
#> [1] 6.06
#>
#>
#> $source_contributions
#> $source_contributions$synthetic_fertilizer_pct
#> [1] 13
#>
#> $source_contributions$organic_fertilizer_pct
#> [1] 0
#>
#> $source_contributions$excreta_pasture_pct
#> [1] 87
#>
#> $source_contributions$crop_residues_pct
#> [1] 0
#>
#> $source_contributions$direct_emissions_pct
#> [1] 70.8
#>
#> $source_contributions$indirect_emissions_pct
#> [1] 29.2Energy-related emissions originate from the combustion of fossil
fuels and the use of electricity on the farm. The function
calc_emissions_energy() estimates carbon dioxide (CO₂)
emissions from diesel and electricity consumption, using country- or
region-specific emission factors when available.
In this example, electricity emissions are calculated using national grid factors for Uruguay.
# Calculate energy-related emissions
energy_emissions <- calc_emissions_energy(
diesel_l = farm_data$diesel_litres,
electricity_kwh = farm_data$electricity_kwh,
country = "UY", # Uruguay electricity grid
boundaries = boundaries
)
energy_emissions
#> $source
#> [1] "energy"
#>
#> $units
#> $units$co2_kg
#> [1] "kg CO2 yr-1"
#>
#> $units$co2eq_kg
#> [1] "kg CO2eq yr-1"
#>
#> $units$diesel_l
#> [1] "L yr-1"
#>
#> $units$petrol_l
#> [1] "L yr-1"
#>
#> $units$lpg_kg
#> [1] "kg yr-1"
#>
#> $units$natural_gas_m3
#> [1] "m3 yr-1"
#>
#> $units$electricity_kwh
#> [1] "kWh yr-1"
#>
#>
#> $fuel_emissions
#> $fuel_emissions$diesel_co2_kg
#> [1] 21360
#>
#> $fuel_emissions$petrol_co2_kg
#> [1] 0
#>
#> $fuel_emissions$lpg_co2_kg
#> [1] 0
#>
#> $fuel_emissions$natural_gas_co2_kg
#> [1] 0
#>
#> $fuel_emissions$electricity_co2_kg
#> [1] 2800
#>
#> $fuel_emissions$units
#> $fuel_emissions$units$co2_kg
#> [1] "kg CO2 yr-1"
#>
#>
#>
#> $direct_co2eq_kg
#> [1] 24160
#>
#> $upstream_co2eq_kg
#> [1] 0
#>
#> $co2eq_kg
#> [1] 24160
#>
#> $emission_factors
#> $emission_factors$diesel_kg_co2_per_l
#> [1] 2.67
#>
#> $emission_factors$petrol_kg_co2_per_l
#> [1] 2.31
#>
#> $emission_factors$lpg_kg_co2_per_kg
#> [1] 3
#>
#> $emission_factors$natural_gas_kg_co2_per_m3
#> [1] 2
#>
#> $emission_factors$electricity_kg_co2_per_kwh
#> [1] 0.08
#>
#> $emission_factors$electricity_country
#> [1] "UY"
#>
#>
#> $inputs
#> $inputs$diesel_l
#> [1] 8000
#>
#> $inputs$petrol_l
#> [1] 0
#>
#> $inputs$lpg_kg
#> [1] 0
#>
#> $inputs$natural_gas_m3
#> [1] 0
#>
#> $inputs$electricity_kwh
#> [1] 35000
#>
#> $inputs$include_upstream
#> [1] FALSE
#>
#>
#> $methodology
#> [1] "IPCC 2019 emission factors"
#>
#> $standards
#> [1] "IPCC 2019 Refinement, IDF 2022"
#>
#> $date
#> [1] "2026-01-13"
#>
#> $energy_metrics
#> $energy_metrics$electricity_share_pct
#> [1] 11.6
#>
#> $energy_metrics$fossil_fuel_share_pct
#> [1] 88.4
#>
#> $energy_metrics$co2_intensity_kg_per_mwh
#> [1] 80Purchased inputs include emissions embodied in externally produced
goods such as concentrates, fertilizers, and other materials used on the
farm. The function calc_emissions_inputs() accounts for
these upstream emissions using average emission factors.
This component is particularly relevant when system boundaries extend beyond the farm gate to include upstream processes.
# Calculate emissions from purchased inputs
input_emissions <- calc_emissions_inputs(
conc_kg = farm_data$concentrate_kg,
fert_n_kg = farm_data$n_fertilizer_kg,
region = "global", # Use global emission factors
boundaries = boundaries
)
input_emissions
#> $source
#> [1] "inputs"
#>
#> $units
#> $units$co2eq_kg
#> [1] "kg CO2eq yr-1"
#>
#> $units$conc_kg
#> [1] "kg yr-1"
#>
#> $units$fert_n_kg
#> [1] "kg N yr-1"
#>
#> $units$plastic_kg
#> [1] "kg yr-1"
#>
#> $units$feed_kg
#> [1] "kg DM yr-1"
#>
#> $units$transport_km
#> [1] "km"
#>
#> $units$ef_conc
#> [1] "kg CO2e per kg"
#>
#> $units$ef_fert
#> [1] "kg CO2e per kg N"
#>
#> $units$ef_plastic
#> [1] "kg CO2e per kg"
#>
#> $units$ef_feed
#> [1] "kg CO2e per kg DM"
#>
#> $units$ef_truck
#> [1] "kg CO2e per (kg*km)"
#>
#>
#> $emissions_breakdown
#> $emissions_breakdown$concentrate_co2eq_kg
#> [1] 126000
#>
#> $emissions_breakdown$fertilizer_co2eq_kg
#> [1] 9900
#>
#> $emissions_breakdown$plastic_co2eq_kg
#> [1] 0
#>
#> $emissions_breakdown$feeds_co2eq_kg
#> grain_dry grain_wet ration byproducts proteins corn soy
#> 0 0 0 0 0 0 0
#> wheat
#> 0
#>
#> $emissions_breakdown$total_feeds_co2eq_kg
#> [1] 0
#>
#> $emissions_breakdown$transport_adjustment_co2eq_kg
#> [1] 0
#>
#>
#> $co2eq_kg
#> [1] 135900
#>
#> $total_co2eq_kg
#> [1] 135900
#>
#> $region
#> [1] "global"
#>
#> $emission_factors_used
#> $emission_factors_used$concentrate
#> $emission_factors_used$concentrate$value
#> [1] 0.7
#>
#> $emission_factors_used$concentrate$unit
#> [1] "kg CO2e per kg"
#>
#>
#> $emission_factors_used$fertilizer
#> $emission_factors_used$fertilizer$value
#> [1] 6.6
#>
#> $emission_factors_used$fertilizer$type
#> [1] "mixed"
#>
#> $emission_factors_used$fertilizer$unit
#> [1] "kg CO2e per kg N"
#>
#>
#> $emission_factors_used$plastic
#> $emission_factors_used$plastic$value
#> [1] 2.5
#>
#> $emission_factors_used$plastic$type
#> [1] "mixed"
#>
#> $emission_factors_used$plastic$unit
#> [1] "kg CO2e per kg"
#>
#>
#> $emission_factors_used$feeds
#> $emission_factors_used$feeds$grain_dry
#> $emission_factors_used$feeds$grain_dry$value
#> [1] 0.4
#>
#> $emission_factors_used$feeds$grain_dry$unit
#> [1] "kg CO2e per kg DM"
#>
#>
#> $emission_factors_used$feeds$grain_wet
#> $emission_factors_used$feeds$grain_wet$value
#> [1] 0.3
#>
#> $emission_factors_used$feeds$grain_wet$unit
#> [1] "kg CO2e per kg DM"
#>
#>
#> $emission_factors_used$feeds$ration
#> $emission_factors_used$feeds$ration$value
#> [1] 0.6
#>
#> $emission_factors_used$feeds$ration$unit
#> [1] "kg CO2e per kg DM"
#>
#>
#> $emission_factors_used$feeds$byproducts
#> $emission_factors_used$feeds$byproducts$value
#> [1] 0.15
#>
#> $emission_factors_used$feeds$byproducts$unit
#> [1] "kg CO2e per kg DM"
#>
#>
#> $emission_factors_used$feeds$proteins
#> $emission_factors_used$feeds$proteins$value
#> [1] 1.8
#>
#> $emission_factors_used$feeds$proteins$unit
#> [1] "kg CO2e per kg DM"
#>
#>
#> $emission_factors_used$feeds$corn
#> $emission_factors_used$feeds$corn$value
#> [1] 0.45
#>
#> $emission_factors_used$feeds$corn$unit
#> [1] "kg CO2e per kg DM"
#>
#>
#> $emission_factors_used$feeds$soy
#> $emission_factors_used$feeds$soy$value
#> [1] 2.1
#>
#> $emission_factors_used$feeds$soy$unit
#> [1] "kg CO2e per kg DM"
#>
#>
#> $emission_factors_used$feeds$wheat
#> $emission_factors_used$feeds$wheat$value
#> [1] 0.52
#>
#> $emission_factors_used$feeds$wheat$unit
#> [1] "kg CO2e per kg DM"
#>
#>
#>
#> $emission_factors_used$transport
#> $emission_factors_used$transport$ef_truck
#> [1] 1e-04
#>
#> $emission_factors_used$transport$unit
#> [1] "kg CO2e per (kg*km)"
#>
#> $emission_factors_used$transport$transport_km
#> [1] 0
#>
#>
#> $emission_factors_used$region_source
#> [1] "global"
#>
#>
#> $inputs_summary
#> $inputs_summary$concentrate_kg
#> [1] 180000
#>
#> $inputs_summary$fertilizer_n_kg
#> [1] 1500
#>
#> $inputs_summary$plastic_kg
#> [1] 0
#>
#> $inputs_summary$total_feeds_kg
#> [1] 0
#>
#> $inputs_summary$feed_breakdown_kg
#> $inputs_summary$feed_breakdown_kg$grain_dry
#> [1] 0
#>
#> $inputs_summary$feed_breakdown_kg$grain_wet
#> [1] 0
#>
#> $inputs_summary$feed_breakdown_kg$ration
#> [1] 0
#>
#> $inputs_summary$feed_breakdown_kg$byproducts
#> [1] 0
#>
#> $inputs_summary$feed_breakdown_kg$proteins
#> [1] 0
#>
#> $inputs_summary$feed_breakdown_kg$corn
#> [1] 0
#>
#> $inputs_summary$feed_breakdown_kg$soy
#> [1] 0
#>
#> $inputs_summary$feed_breakdown_kg$wheat
#> [1] 0
#>
#>
#>
#> $contribution_analysis
#> $contribution_analysis$concentrate_pct
#> [1] 92.7
#>
#> $contribution_analysis$fertilizer_pct
#> [1] 7.3
#>
#> $contribution_analysis$plastic_pct
#> [1] 0
#>
#> $contribution_analysis$feeds_pct
#> [1] 0
#>
#> $contribution_analysis$transport_pct
#> [1] 0
#>
#>
#> $uncertainty
#> NULL
#>
#> $methodology
#> [1] "Regional emission factors with optional uncertainty analysis"
#>
#> $standards
#> [1] "IDF 2022; generic LCI sources"
#>
#> $date
#> [1] "2026-01-13"After calculating emissions for each individual source, the function
calc_total_emissions() aggregates all components into a
single result. The output includes total farm emissions and a breakdown
by source, which is useful for identifying the main contributors to the
carbon footprint.
# Combine all emission sources
total_emissions <- calc_total_emissions(
enteric_emissions,
manure_emissions,
soil_emissions,
energy_emissions,
input_emissions
)
total_emissions
#> Carbon Footprint - Total Emissions
#> ==================================
#> Total CO2eq: 645948.3 kg CO2eq yr-1
#> Number of sources: 5
#>
#> Breakdown by source:
#> energy : 24160 kg CO2eq yr-1
#> enteric : 256474 kg CO2eq yr-1
#> inputs : 135900 kg CO2eq yr-1
#> manure : 159755.4 kg CO2eq yr-1
#> soil : 69658.88 kg CO2eq yr-1
#>
#> Calculated on: 2026-01-13While absolute emissions provide information on the total environmental impact of a farm, intensity metrics relate emissions to production or land use. These metrics allow comparisons between farms of different sizes or production levels.
# Calculate emissions per kg of milk (FPCM)
milk_intensity <- calc_intensity_litre(
total_emissions = total_emissions,
milk_litres = farm_data$milk_litres,
fat = 3.8, # Typical fat content
protein = 3.2 # Typical protein content
)
milk_intensity
#> Carbon Footprint Intensity
#> ==========================
#> Intensity: 1.08 kg CO2eq/kg FPCM
#>
#> Production data:
#> Raw milk (L): 6e+05 L
#> Raw milk (kg): 618,000 kg
#> FPCM (kg): 597,977 kg
#> Fat content: 3.8 %
#> Protein content: 3.2 %
#>
#> Total emissions: 645,948 kg CO2eq
#> Calculated on: 2026-01-13# Calculate emissions per hectare
area_intensity <- calc_intensity_area(
total_emissions = total_emissions,
area_total_ha = farm_data$total_area_ha,
area_productive_ha = farm_data$productive_area_ha,
area_breakdown = list(
pasture_permanent = 80,
pasture_temporary = 20,
crops_feed = 15,
infrastructure = 5
)
)
area_intensity
#> Carbon Footprint Area Intensity
#> ===============================
#> Intensity (total area): 5382.9 kg CO2eq/ha
#> Intensity (productive area): 5872.26 kg CO2eq/ha
#>
#> Area summary:
#> Total area: 120 ha
#> Productive area: 110 ha
#> Land use efficiency: 91.7%
#>
#> Land use breakdown:
#> pasture permanent: 80.0 ha (66.7%) -> 430632 kg CO2eq
#> pasture temporary: 20.0 ha (16.7%) -> 107658 kg CO2eq
#> crops feed: 15.0 ha (12.5%) -> 80744 kg CO2eq
#> infrastructure: 5.0 ha (4.2%) -> 26914 kg CO2eq
#>
#> Total emissions: 645,948 kg CO2eq
#> Calculated on: 2026-01-13The primary goal of cowfootR is to calculate greenhouse gas emissions and intensity metrics following standardized methodologies. The package does not aim to provide a comprehensive visualization framework.
Instead, cowfootR outputs are designed to be easily extracted and converted into standard R objects (such as numeric vectors, lists, or data frames), which can then be visualized using external packages like ggplot2.
The examples below illustrate how users can manually transform cowfootR results into data frames for exploratory visualization and reporting.
# Create a data frame for plotting
emission_breakdown <- data.frame(
Source = names(total_emissions$breakdown),
Emissions = as.numeric(total_emissions$breakdown)
)
# Create pie chart
ggplot(emission_breakdown, aes(x = "", y = Emissions, fill = Source)) +
geom_col(width = 1) +
coord_polar("y", start = 0) +
theme_void() +
labs(
title = "Farm Emissions by Source",
subtitle = paste("Total:", round(total_emissions$total_co2eq), "kg CO₂eq/year")
) +
theme(
plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)
)# Create comparison chart
intensity_data <- data.frame(
Metric = c(
"Milk Intensity\n(kg CO₂eq/kg FPCM)",
"Area Intensity\n(kg CO₂eq/ha)"
),
Value = c(
milk_intensity$intensity_co2eq_per_kg_fpcm,
area_intensity$intensity_per_productive_ha
),
Benchmark = c(1.2, 8000) # Typical benchmark values
)
ggplot(intensity_data, aes(x = Metric)) +
geom_col(aes(y = Value), fill = "steelblue", alpha = 0.7) +
geom_point(aes(y = Benchmark), color = "red", size = 3) +
geom_text(aes(y = Benchmark, label = "Benchmark"),
color = "red", vjust = -0.5
) +
labs(
title = "Farm Intensity Metrics",
y = "Value",
x = ""
) +
theme_minimal()The calculated intensities can be compared against regional or global benchmarks:
This vignette introduced the basic concepts of dairy life cycle assessment and demonstrated a complete single-farm workflow using cowfootR.
To continue exploring the package, users may refer to the following vignettes and functions:
Single Farm Analysis
A detailed walkthrough of individual emission calculation functions
(calc_emissions_*()), including assumptions and optional
arguments.
Batch Processing Workflow
How to process multiple farms simultaneously using structured input data
and Excel templates.
Understanding IPCC Methodology Tiers
Guidance on choosing between Tier 1 and Tier 2 approaches and
understanding their implications for data requirements and
accuracy.
Complete Parameter Reference Guide
A comprehensive overview of all available functions, arguments, and
default values used throughout the package. ## Key Takeaways
For questions, bug reports, or contributions, visit the cowfootR GitHub repository or contact the development team.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.