R подсчитать количество различного количества значений в группе, используя dplyr - PullRequest
0 голосов
/ 20 мая 2018

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

    ID= c('A', 'A', 'A', 'B', 'B', 'B')
    color=c('white', 'green', 'orange', 'white', 'green', 'green')

    d = data.frame (ID, color)
    d %>%
      group_by(ID) %>%
      mutate(count = n_distinct(color))

Запустив этот код, я получил следующий результат:

      ID    color  count
      <fct> <fct>  <int>
      1 A     white      3
      2 A     green      3
      3 A     orange     3
      4 B     white      3
      5 B     green      3
      6 B     green      3

когда мне нужно

      ID    color  count
      <fct> <fct>  <int>
      1 A     white      3
      2 A     green      3
      3 A     orange     3
      4 B     white      2
      5 B     green      2
      6 B     green      2

Может кто-нибудь сказать мне, что я делаю не так или как это можно сделать с помощью dplyr?

Ответы [ 2 ]

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

Некоторые заметки:

# 1. Data set
df = data.frame (
  id = c('A', 'A', 'A', 'B', 'B', 'B'),
  color = c('white', 'green', 'orange', 'white', 'green', 'green'))

# 2. Desired result
df %>%
  group_by(id) %>%
  dplyr::mutate(count = n_distinct(color))

# 3. Result with a number of unique 'color's per 'id'
df %>%
  group_by(id, color) %>%
  dplyr::mutate(count = n()) %>% 
  unique()
0 голосов
/ 20 мая 2018

За комментарии @akrun и @ DominicComtois выше, код работает, как только я укажу, что я использую mutate из dplyr, используя «dplyr :: mutate», а не просто «mutate»

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