Хорошо, у меня есть небольшой вопрос, так что, пожалуйста, извините. У меня есть объект фрейма данных следующим образом:
| 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
в каждом порядке. Надеюсь, это ясно