dplyr - указать порядок после сбора и распространения - PullRequest
0 голосов
/ 30 мая 2018

Я хочу сохранить порядок выходных переменных в том же порядке, в каком они были созданы в операторе mutate.Как мне это сделать?Кажется, переупорядочение в алфавитном порядке.Спасибо!

df%>%
  mutate(
    twinkie= var1/60,
    peanut= var2/60,
    apple= var3/60,
    cheese= var4/60
  ) %>%
  group_by(store, associate)%>%
  summarise(
    twinkie=mean(twinkie),
    peanut = round(mean(peanut),
    apple = round(mean(apple),1),
    cheese = round(mean(cheese),1))
  %>%gather(Metric, value, -store, -associate)%>%spread(associate, value)

1 Ответ

0 голосов
/ 30 мая 2018

Преобразовать собранные Metric в коэффициент с желаемым порядком.После gather значения Metric будут в том порядке, в котором вы их создали.Затем вы можете использовать функцию unique, чтобы установить этот порядок как порядок уровней в Metric.Например:

library(tidyverse)

# Fake data
set.seed(2)
df = replicate(4, rnorm(30)) %>% 
  as.tibble %>% 
  mutate(store=sample(LETTERS[1:3],30,replace=TRUE),
         associate=sample(letters[1:4],30,replace=TRUE))

df %>%
  group_by(store, associate) %>%
  summarise(
    twinkie=mean(V1/60),
    peanut = round(mean(V2/60)),
    apple = round(mean(V3/60),1),
    cheese = round(mean(V4/60),1)) %>%
  gather(Metric, value, -store, -associate) %>% 
  mutate(Metric = factor(Metric, levels=unique(Metric))) %>% 
  spread(associate, value)
   store  Metric         a         b         c         d
1      A twinkie 0.1871809 0.1466679 0.1645085 0.1661182
2      A  peanut 0.0000000 0.0000000 0.0000000 0.0000000
3      A   apple 0.2000000 0.1000000 0.2000000 0.2000000
4      A  cheese 0.2000000 0.2000000 0.2000000 0.2000000
5      B twinkie 0.1635126 0.1865576 0.1823273 0.1857983
6      B  peanut 0.0000000 0.0000000 0.0000000 0.0000000
7      B   apple 0.2000000 0.1000000 0.2000000 0.1000000
8      B  cheese 0.2000000 0.2000000 0.2000000 0.2000000
9      C twinkie 0.1776549 0.1635294 0.1667490 0.1585236
10     C  peanut 0.0000000 0.0000000 0.0000000 0.0000000
11     C   apple 0.2000000 0.2000000 0.1000000 0.2000000
12     C  cheese 0.2000000 0.2000000 0.2000000 0.2000000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...