Преобразование кадра данных с символьным вектором в виде столбца в longform - PullRequest
0 голосов
/ 04 февраля 2020

Я надеялся, что кто-нибудь сможет мне помочь с проблемой, с которой я столкнулся при выполнении упражнения на курсе DataCamp «Создание веб-приложений с использованием Shiny in R», особенно с преобразованием одного из наборов данных, которые они используют в этом упражнении.

Я импортировал их набор данных (RDS) с помощью функции readRDS, и он выглядит следующим образом:

 $ id         : int  10259 25693 20130 22213 13162 6602 42779 3735 16903 12734 ...
 $ cuisine    : chr  "greek" "southern_us" "filipino" "indian" ...
 $ ingredients:List of 39774
  ..$ : chr  "romaine lettuce" "black olives" "grape tomatoes" "garlic" ...
  ..$ : chr  "plain flour" "ground pepper" "salt" "tomatoes" ...
  ..$ : chr  "eggs" "pepper" "salt" "mayonaise" ...
  ..$ : chr  "water" "vegetable oil" "wheat" "salt"
  ..$ : chr  "black pepper" "shallots" "cornflour" "cayenne pepper" ...
  ..$ : chr  "plain flour" "sugar" "butter" "eggs" ...
  ..$ : chr  "olive oil" "salt" "medium shrimp" "pepper" ...
  ..$ : chr  "sugar" "pistachio nuts" "white almond bark" "flour" ...
  ..$ : chr  "olive oil" "purple onion" "fresh pineapple" "pork" ...
  ..$ : chr  "chopped tomatoes" "fresh basil" "garlic" "extra-virgin olive oil" ...

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

Обычно, когда мне нужно сделать что-то подобное, я использую функцию dplyr «сбор», но в этом случае это не сработает, так как это для сбора нескольких столбцов, а не для разбивки столбца, содержащего символ векторы различной длины. Я также пытался использовать функцию Отдельные (), но для этого необходимо указать столбцы, на которые вы хотите разделить векторы, что я не могу сделать, так как все они различаются по длине.

Если бы кто-нибудь мог дать мне представление о том, как я go о преобразовании вышеуказанного кадра данных, чтобы он был длинным, я был бы очень благодарен.

Большое спасибо!

1 Ответ

0 голосов
/ 04 февраля 2020

Звучит так, как вы ищете spread: https://tidyr.tidyverse.org/reference/spread.html. Это эффективно противоположно gather.

. Следует также отметить, что gather и spread больше не обновляются, поскольку были заменены их, возможно, более явными аналогами pivot_longer и pivot_wider. : https://tidyr.tidyverse.org/reference/pivot_longer.html и https://tidyr.tidyverse.org/reference/pivot_wider.html. Однако Datacamp, возможно, не обновил свои курсы, чтобы отразить это.

...