使用R中的条件计算数据框对象中的行

时间:2018-05-04 20:56:57

标签: r dataframe dplyr

好的,我有一点菜鸟问题,所以请原谅。我有一个数据框对象如下:

| 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,dots)中的错误:      评估错误:对于“因子”类对象的“组”没有适用的方法。

看起来很简单,但无法弄清楚如何去做。任何帮助将不胜感激。

编辑:这是我试图运行的代码,我在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))

在输出中,我需要知道平均值。从每个订单ID订购的部门,所以我需要这样的东西:

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

然后我应该能够在每个顺序中使用ggplot,no. of orders vs no. of departments进行绘图。希望这很清楚

0 个答案:

没有答案