Изменение формы кадра данных с помощью одного | Date | Temperature_1 | Temperature_2 | Temperature_3 | etc ..... в | Date | Temperature |форма - PullRequest
0 голосов
/ 18 мая 2019

У меня есть температурный фрейм с 37 станций.Первый столбец - дата, а от второго до последнего столбец - температура от 1 до 37 станций.Мне нужно расположить данные таким образом, чтобы результат содержал столбец Дата и столбец температуры со станции 1 - 37. Чтобы столбец даты повторялся после каждой станции.

Я пытался

library(dplyr)
tmax_1 %>% select('Date', 'V1')
tmax_2 %>% select('Date', 'V2')
tmax_3 %>% select('Date', V3)
tmax_4 %>% select('Date', V4)
tmax_5 %>% select('Date', V5)
tmax_6 %>% select('Date', V6)

Но для этого нужно много печатать.Может кто-нибудь предложить лучшее решение в случае, если мне нужно сделать это для более чем 1000 станций !!! [введите описание изображения здесь] [1]

1 Ответ

0 голосов
/ 18 мая 2019

Похоже, вы хотите сделать "длинные" данные из "широких" данных.tidyr имеет gather(), который делает это.

Поскольку вы задали формат заголовка в своем вопросе , который вы могли бы сделать лучше , вы можете попробовать:

tidyr::gather(df, key = "Station", value = "Temperature", -Date)

В этом вы создадите столбец с именем Station, который будет содержать имена или идентификаторы станции в соответствии со старыми именами столбцов, а также столбец Temperature, который будет содержать значения температуры в градусах.Последний аргумент -Date должен исключить столбец Date из того же преобразования.Вы можете узнать больше о gather() и spread() в блоге Rstudio и других вопросах о stackoverflow .

. В следующий раз это может быть полезно, если выдал некоторую визуализацию ваших данных или воспроизводимый пример и ожидаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...