dplyr :: суммировать по алфавиту, но мне нужен оригинальный порядок - PullRequest
0 голосов
/ 05 декабря 2018
library(tidyverse)

У меня есть строка букв и букв-слов:

myletters <- c("A", "A", "B", "C", "C", "C", "C", "AA", "BB", "BB")

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

mylettersNever <- c("A", "B", "A", "C", "C", "C", "C", "AA", "BB", "BB")

Я пробовал некоторые вещи с table(), но он сделал то же самое, что и следующий код.Это не работает:

myletters %>%
  tibble(letters = .) %>%
  group_by(letters) %>%
  summarise(n = n())

... потому что вывод

# A tibble: 5 x 2
  letters     n
  <chr>   <int>
1 A           2
2 AA          1
3 B           1
4 BB          2
5 C           4

... но я хотел бы:

# A tibble: 5 x 2
  letters     n
  <chr>   <int>
1 A           2
2 B           1
3 C           4
4 AA          1
5 BB          2

Помощь?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

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

myletters %>%
  tibble(letters = .) %>%
  count(id = match(letters, unique(letters)), letters) %>%
  select(-id)

# A tibble: 5 x 2
  letters     n
  <chr>   <int>
1 A           2
2 B           1
3 C           4
4 AA          1
5 BB          2
0 голосов
/ 05 декабря 2018

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

library(tidyverse)
myletters <- c("A", "A", "B", "C", "C", "C", "C", "AA", "BB", "BB")

tibble(letters = myletters) %>%
  mutate(letters = as_factor(letters)) %>%
  count(letters)
#> # A tibble: 5 x 2
#>   letters     n
#>   <fct>   <int>
#> 1 A           2
#> 2 B           1
#> 3 C           4
#> 4 AA          1
#> 5 BB          2

Создано в 2018-12-05 пакетом Представление (v0.2.1)

...