Как я могу создать 5-летние средние значения для нескольких стран в наборе данных панели? - PullRequest
0 голосов
/ 24 мая 2019

У меня есть групповые данные для 67 стран за 25 лет, и мне нужно сгенерировать 5-летние средние значения всех переменных для каждой страны.

Я уже просмотрел следующие посты, но это не решило мою проблему:

R: Вычисление средних значений за 5 лет по данным панели

Принимая среднее значение за 3 года в наборе данных панели с NA

Я пробовал команду seq(), но она генерирует периоды 1991-1996, 1996-2001 и т. Д., Но это не то, что я ищу.

Мне бы хотелось иметь средние значения за 5 лет за 1991-1995, 1996-2000, 2001-2005, 2006-2010 и 2011-2015 годы для каждой страны, а затем добавить фиктивные переменные для каждого периода и страны.

Мой набор данных выглядит следующим образом:


+---------------+--------------+------+------+----------------+--------------------+------+
|    Country    | Country Code | Year | GINI | Trade Openness | Financial Openness | HMI  |
+---------------+--------------+------+------+----------------+--------------------+------+
| United States | USA          | 1991 | 60.4 |          45.71 |               81.4 | 5.56 |
| United States | USA          | 1992 | 50.6 |          65.1  |               80.7 | 6.00 |
| United States | USA          | 1993 | 56.1 |          61.0  |               79.1 |  6.1 | 
| United States | USA          | 1994 | 59.1 |          62.07 |               80.7 |  5.7 |
| United States | USA          | 1995 | 62.5 |          54.34 |               76.0 |  6.0 |
| United States | USA          | 1996 | 56.9 |          60.09 |               79.8 |  6.4 |
| United States | USA          | 1997 | 56.8 |          61.7  |               78.1 |  5.9 |
| ...           |              |      |      |                |                    |      |
| Argentina     | ARG          | 1991 | 45.9 |           54.8 |               91.2 |  4.6 |
| Argentina     | ARG          | 1992 | 47.1 |           56.1 |               87.1 |  4.7 |
| Argentina     | ARG          | 1993 | 42.7 |           56.9 |               89.8 |  6.1 |
| Argentina     | ARG          | 1994 | 47.1 |           55.1 |               88.1 |  5.9 |
| Argentina     | ARG          | 1995 | 50.0 |           56.1 |               85.7 |  4.7 |
| Argentina     | ARG          | 1996 | 49.0 |           54.0 |               87.2 |  4.5 |
| Argentina     | ARG          | 1997 | 48.7 |           56.6 |               86.5 |  4.9 |
| ...           |              |      |      |                |                    |      |
+---------------+--------------+------+------+----------------+--------------------+------+

Мой ожидаемый результат будет примерно таким:

+---------------+-------------+-------+-------+-------+------+------+------+----------+----------+
|    Country    |   Period    | GINI  |  TO   |  FO   | HCI  | dUSA | dARG | dperiod1 | dperiod2 |
+---------------+-------------+-------+-------+-------+------+------+------+----------+----------+
| United States | 1991-1995   | 57.74 | 57.64 | 79.58 | 5.87 |    1 |    0 |        1 |        0 |
| United States | 1996-2000   |   ... |   ... |   ... |  ... |    1 |    0 |        0 |        1 |
| ...           |             |       |       |       |      |      |      |          |          |
| Argentina     | 1991-1995   | 46.56 |  55.8 | 88.38 |  5.2 |    0 |    1 |        1 |        0 |
| Argentina     | 1996-2000   |   ... |   ... |   ... |  ... |    0 |    1 |        0 |        1 |
| ...           |             |       |       |       |      |      |      |          |          |
+---------------+-------------+-------+-------+-------+------+------+------+----------+----------+

Периоды не обязательно должны называться 1991-1996 и т. Д., 1, 2 и т. Д. Тоже хорошо.

1 Ответ

2 голосов
/ 24 мая 2019

Чтобы создать средние значения, с помощью dplyr вы можете сделать:

df %>%
 arrange(Country, Year) %>%
 group_by(Country) %>%
 mutate(Period = gl(ceiling(n() / 5), 5, length = n())) %>%
 group_by(Country, Country_Code, Period) %>%
 summarise_all(mean)

  Country       Country_Code Period  Year  GINI Trade_Openness Financial_Openness   HMI
  <chr>         <chr>        <fct>  <dbl> <dbl>          <dbl>              <dbl> <dbl>
1 Argentina     ARG          1      1993   46.6           55.8               88.4  5.2 
2 Argentina     ARG          2      1996.  48.8           55.3               86.8  4.7 
3 United_States USA          1      1993   57.7           57.6               79.6  5.87
4 United_States USA          2      1996.  56.8           60.9               78.9  6.15

Пример данных:

df <- read.table(text = "
    Country     Country_Code  Year  GINI  Trade_Openness  Financial_Openness  HMI  
                  United_States  USA           1991  60.4           45.71                81.4  5.56 
                  United_States  USA           1992  50.6           65.1                 80.7  6.00 
                  United_States  USA           1993  56.1           61.0                 79.1   6.1  
                  United_States  USA           1994  59.1           62.07                80.7   5.7 
                  United_States  USA           1995  62.5           54.34                76.0   6.0 
                  United_States  USA           1996  56.9           60.09                79.8   6.4 
                  United_States  USA           1997  56.8           61.7                 78.1   5.9 
                  Argentina      ARG           1991  45.9            54.8                91.2   4.6 
                  Argentina      ARG           1992  47.1            56.1                87.1   4.7 
                  Argentina      ARG           1993  42.7            56.9                89.8   6.1 
                  Argentina      ARG           1994  47.1            55.1                88.1   5.9 
                  Argentina      ARG           1995  50.0            56.1                85.7   4.7 
                  Argentina      ARG           1996  49.0            54.0                87.2   4.5 
                  Argentina      ARG           1997  48.7            56.6                86.5   4.9 ", 
                 header = TRUE,
                 stringsAsFactors = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...