Фрейм данных с многолетним и годовым итогом [R] - PullRequest
0 голосов
/ 05 октября 2018

У меня большой фрейм данных (AT_df) со многими годами для многих стран, но нет годовых итогов.Исходный набор данных уже уменьшен до Pollutant_name (x1 = "CO2"), я удалил все подкатегории и в одну страну.

Я готовлю эти данные для последующего запуска ggplot2, но для этого мне нужнодобавить строку для каждого года с суммой категорий (= 1-6).

Данные выглядят так (отрывок):

       x     y          x1      x2      x4   x6
1553   1993  0.00000    CO2     Austria  6   6 - Other Sector
1554   2006  0.00000    CO2     Austria  6   6 - Other Sector
1555   2015  0.00000    CO2     Austria  6   6 - Other Sector
2243   1998  12.07760   CO2     Austria  5   5 - Waste management
2400   1992  11.12720   CO2     Austria  5   5 - Waste management
2401   1995  11.11040   CO2     Austria  5   5 - Waste management
2402   2006  10.26000   CO2     Austria  5   5 - Waste management
2489   1998  0.00000    CO2     Austria  6   6 - Other Sector

Я хотел бы вставить строкукоторая помечена (x6 = агрегат) и суммирует значения для y (выбросы) при условии x = год xyz & x2 = country_xyz.

По сути, что-то вроде этого

sum(AT_df, x4 %in% c("1", "2", "3", "4", "5", "6") & x ="yearxyz" & 
x2="Austria"). 

Затем его следует вставить в кадр данных НА КАЖДЫЙ ГОД (всего 16 лет)

Пока я пробовал кое-чтомы читали о stackoverflow, например:

rbind(AT_df, data.frame(x1='Aggregate', y = sum(AT_df$y)))

... Мне не удалось написать какой-либо правильно работающий код

Спасибо в любом случае и за любую помощь.

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете сначала подготовить фрейм данных со сводными данными в той же форме, что и ваш AT_df, а затем объединить их.Есть много способов сделать это в R. Здесь я использую пакет dplyr.Поскольку выборочных данных недостаточно, чтобы полностью показать это, я также сначала создаю некоторые искусственные данные.После этого необходимо выполнить следующие шаги:

  • Назовите все столбцы, которые должны быть сохранены при суммировании (функция group_by).
  • Суммируйте некоторые столбцы и назначьте выходные данныев столбец (функция summarise).
  • Добавьте столбец для отсутствующей переменной (ей) (функция mutate).
  • Объедините результирующий кадр данных с исходным (функция union_all)

Финальная filter используется только для отображения некоторых представительных данных.

set.seed(42)
df <- expand.grid(year = 1993:2015,
                  pollutant = "CO2",
                  country = LETTERS,
                  sector = 1L:6L)

df$amount <- runif(nrow(df), 0, 15)

library("dplyr")
df %>%
  group_by(year, pollutant, country) %>%
  summarise(amount = sum(amount)) %>%
  mutate(sector = -1L) %>%
  union_all(df) %>%
  filter(country == "A" & year == 1996)
#> # A tibble: 7 x 5
#> # Groups:   year, pollutant [1]
#>    year pollutant country amount sector
#>   <int> <fct>     <fct>    <dbl>  <int>
#> 1  1996 CO2       A        41.5      -1
#> 2  1996 CO2       A        12.5       1
#> 3  1996 CO2       A         4.24      2
#> 4  1996 CO2       A         6.70      3
#> 5  1996 CO2       A         1.88      4
#> 6  1996 CO2       A         9.40      5
#> 7  1996 CO2       A         6.82      6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...