dplyr `pivot_longer ()` объект не найден, но он прямо там? - PullRequest
0 голосов
/ 29 февраля 2020
library(tidyverse)
df <- tibble(Date = as.Date(c("2020-01-01", "2020-01-02")),
             Shop = c("Store A", "Store B"),
             Employees = c(5, 10),
             Sales = c(1000, 3000))

#> # A tibble: 2 x 4
#>   Date       Shop    Employees Sales
#>   <date>     <chr>       <dbl> <dbl>
#> 1 2020-01-01 Store A         5  1000
#> 2 2020-01-02 Store B        10  3000

Я переключаюсь с распространения / сбора dplyr на pivot_ *, следуя справочному руководству dplyr . Я хочу собрать столбцы «Сотрудники» и «Продажи» следующим образом:

df %>% pivot_longer(-Date, -Shop, names_to = "Names", values_to = "Values")
#> Error in build_longer_spec(data, !!cols, names_to = names_to, 
#> values_to = values_to, : object 'Shop' not found

Но я получаю эту ошибку. Кажется, я все делаю правильно. За исключением того, что я, очевидно, нет. Вы знаете, что пошло не так?

Ответы [ 2 ]

2 голосов
/ 29 февраля 2020

Аргумент cols - это все столбцы, которые вы хотите повернуть. Вы можете думать об этом как о дополнении аргумента id.vars из reshape2::melt

df %>% pivot_longer(-c(Date, Shop), names_to = "Names", values_to = "Values")

, такого же как:

reshape2::melt(df, id.vars=c("Date", "Shop"), variable.name="Names", value.name="Value")
1 голос
/ 29 февраля 2020

Я думаю, что более ясный синтаксис будет

df %>% 
      pivot_longer(cols = c(Employees, Sales))

В отличие от записи столбцов, которые вы хотите отбросить.

names_to = "Names", values_to = "Values"

Просто собирается использовать заглавные буквы по умолчанию для новых имен столбцов name и value

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