Сводный столбец кода R в строки и строки в столбцы - PullRequest
2 голосов
/ 19 июня 2020

Я новичок в RStudio, бился над этим вопросом в течение 2 дней и пришел к выводу, что мне нужна помощь.

У меня есть фрейм данных, который выглядит следующим образом:

ISO  Indicator 2009  2010 2011 
ARB  Use of electricity 0.5 0.5 0.4
CSS  Population  2.5 3.5 0.5

Я хочу получить

ISO Year Use of Electricity Population
ARB 2009 0.5 na
ARB 2010 0.5 na
ARB 2011 0.4 na
CSS 2009 na 2.5
CSS 2010 na 3.5
CSS 2011 na 0.5

Я начал с функции "сбора", чтобы создайте столбец «Год», а затем преобразовал год в число c и создал столбец результатов для значений. Затем я попробовал "распространить" и получил сообщение об ошибке типа моего фрейма данных. Есть ли способ сделать этот поворот за один шаг, если да, я был бы рад это услышать. Я подумал о том, чтобы добавить строку вверху и назвать ее Год, чтобы использовать функцию поворота, но я не уверен, что делать дальше. Проблема связана с тем, что мой фрейм данных должен быть преобразован в матрицу?

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 19 июня 2020

Предполагая, что ваши данные

df <- read_table2("ISO  Indicator 2009  2010 2011
ARB  Use_of_electricity 0.5 0.5 0.4
CSS  Population  2.5 3.5 0.5")

Использование dplyr / tidyr:

df %>%
  pivot_longer(cols=as.character(2009:2011), names_to="Year") %>%
  pivot_wider(names_from="Indicator")

дает

# A tibble: 6 x 4
  ISO   year  Use_of_electricity Population
  <chr> <chr>              <dbl>      <dbl>
1 ARB   2009                 0.5       NA  
2 ARB   2010                 0.5       NA  
3 ARB   2011                 0.4       NA  
4 CSS   2009                NA          2.5
5 CSS   2010                NA          3.5
6 CSS   2011                NA          0.5
...