многошаговый сбор столбцов в R - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть data.frame вот так:

df<-data.frame(Time=c(1:100),Rome_population=c(1:100),Rome_gdp=c(1:100),Rome_LifeLenght=c(1:100),London_population=c(1:100),London_gdp=c(1:100),London_LifeLenght=c(1:100),Berlin_population=c(1:100),Berlin_gdp=c(1:100),Berlin_LifeLenght=c(1:100))

И мне бы хотелось иметь data.frame вот так: df <-data.frame (время, город, население, ВВП, LifeLenght)</p>

Как мне это сделать?Возможно с тидыром?

Спасибо!

1 Ответ

0 голосов
/ 24 ноября 2018

Попробуйте:

df %>% 
  gather(key, value, Rome_population:Berlin_LifeLenght) %>% 
  separate(key, into = c("city", "stat"), sep = "_") %>% 
  spread(stat, value)

Вывод:

 # A tibble: 300 x 5
    Time city     gdp LifeLenght population
   <int> <chr>  <int>      <int>      <int>
 1     1 Berlin     1          1          1
 2     1 London     1          1          1
 3     1 Rome       1          1          1
 4     2 Berlin     2          2          2
 5     2 London     2          2          2
 6     2 Rome       2          2          2
 7     3 Berlin     3          3          3
 8     3 London     3          3          3
 9     3 Rome       3          3          3
10     4 Berlin     4          4          4
# ... with 290 more rows
...