Подсчет строк в объекте датафрейма с критериями в R - PullRequest
0 голосов
/ 04 мая 2018

Хорошо, у меня есть небольшой вопрос, так что, пожалуйста, извините. У меня есть объект фрейма данных следующим образом:

| order_id| department_id|department    |  n|
|--------:|-------------:|:-------------|--:|
|        1|             4|produce       |  4|
|        1|            15|canned goods  |  1|
|        1|            16|dairy eggs    |  3|
|       36|             4|produce       |  3|
|       36|             7|beverages     |  1|
|       36|            16|dairy eggs    |  3|
|       36|            20|deli          |  1|
|       38|             1|frozen        |  1|
|       38|             4|produce       |  6|
|       38|            13|pantry        |  1|
|       38|            19|snacks        |  1|
|       96|             1|frozen        |  2|
|       96|             4|produce       |  4|
|       96|            20|deli          |  1|

Это код, который я использовал для получения этого объекта:

temp5 <- opt %>%
    left_join(products,by="product_id")%>%
    left_join(departments,by="department_id") %>%
    group_by(order_id,department_id,department) %>%
    tally() %>%
    group_by(department_id)

kable(head(temp5,14))

Как видите, объект содержит отделы, присутствующие в каждом Order_id. Теперь я хочу посчитать количество отделов для каждого order_id

Я пытался использовать метод summarise() в пакете dplyr, но он выдает следующую ошибку:

Ошибка в summarise_impl (.data, точки): Ошибка оценки: нет применимого метода для «групп», примененного к объекту класса «фактор».

Кажется, все так просто, но не могу понять, как это сделать. Любая помощь будет оценена.

Редактировать: это код, который я пытался запустить, пост, который я прочитал о функции count() в пакете plyr, я тоже пытался использовать это, но это бесполезно, так как ему нужно фрейм данных в качестве входных данных, тогда как я хочу только подсчитать количество вхождений в фрейм данных

     temp5 <- opt %>%
     +     left_join(products,by="product_id")%>%
     +     left_join(departments,by="department_id") %>%
     +     group_by(order_id,department_id,department) %>%
     +     tally() %>%
     +     group_by(department_id) %>%
     +     summarise(count(department))

В выводе мне нужно знать среднее нет. отделов, заказанных в каждом идентификаторе заказа, поэтому мне нужно что-то вроде этого:

      Order_id | no. of departments
         1                3
         36               4
         38               4
         96               3

И тогда я смогу построить график, используя ggplot, no. of orders против no. of departments в каждом порядке. Надеюсь, это ясно

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