R: берем разные переменные из строки и создаем заголовок столбца

#r #dplyr #tidyr

#r #dplyr #tidyr

Вопрос:

 rainfall <- data.frame("date" = rep(1:15),"location_code" = rep(6:8,5),
                       "rainfall"=runif(15, min=12, max=60))
rainfall30 <- rainfall %>%
  group_by(location_code) %>%
  filter(rainfall>30)
  

Я хочу использовать приведенные выше данные для создания следующей таблицы, есть ли способ сделать это в R с помощью dplyr?

 date location6 location7 location8 
  2              47.7
  5              46.8
  6                         32.3
  7       55.3
  9                        40.5
  

Я только начинаю использовать R, пожалуйста, извинитесь, если на это уже дан ответ. Спасибо.

Комментарии:

1. Вам нужно tidyr::pivot_wider(rainfall30, names_from = location_code, values_from = rainfall) ?

Ответ №1:

Я думаю, что вы ищете tidyr::pivot_wider , что превращает эту длинную форму data.frame в широкую форму. Смотрите Здесь и здесь для получения дополнительной информации о сводке данных с tidyr помощью .

 rainfall30 %>% 
  pivot_wider(names_from = location_code,
              values_from = rainfall)

#     date   `6`   `7`   `8`
#    <int> <dbl> <dbl> <dbl>
#  1     1  32.3  NA    NA  
#  2     2  NA    52.7  NA  
#  3     3  NA    NA    54.3
#  4     4  30.6  NA    NA  
#  5     7  52.4  NA    NA  
  

Ответ №2:

Вот базовый вариант R, использующий reshape subset

 reshape(
  subset(rainfall, rainfall > 30),
  idvar = "date",
  timevar = "location_code",
  direction = "wide"
)
  

что дает что-то вроде приведенного ниже (используется set.seed(1) для генерации rainfall )

    date rainfall.8 rainfall.6 rainfall.7
3     3   39.49696         NA         NA
4     4         NA   55.59397         NA
6     6   55.12270         NA         NA
7     7         NA   57.34441         NA
8     8         NA         NA   43.71829
9     9   42.19747         NA         NA
13   13         NA   44.97710         NA
14   14         NA         NA   30.43698
15   15   48.95239         NA         NA