将一个数据帧的计数附加到另一个数据帧

时间:2018-06-18 12:58:07

标签: r dplyr

我有两个数据框,第一个包括商品代码,描述和价格(价格省略)和另一个,这两个完全相同,但价格列是一个唯一的列表:

head(currentmonthprice)
  LOOKUPLINK ITEMCODE              ITEMDESCRIPTION PRICE
1   032105-1   032105       Basic Berry Mix10x400g £x.xx
4   055800-1   055800       Blueberries     8x400g £x.xx
5   055801-1   055801           Raspberries 8x350g £x.xx
6   055802-1   055802     Straw/Blueberries 8x400g £x.xx
7   055803-1   055803          Cherries DS  8x500g £x.xx
8   055804-1   055804         Summer Fruits 8x500g £x.xx 

head(currentmonthitemcodes)
  ITEMCODE              ITEMDESCRIPTION PRICE COUNTOFPRICE
1   032105       Basic Berry Mix10x400g £x.xx ?
2   055800       Blueberries     8x400g £x.xx ?
3   055801           Raspberries 8x350g £x.xx ?
4   055802     Straw/Blueberries 8x400g £x.xx ?
5   055803          Cherries DS  8x500g £x.xx ?
6   055804         Summer Fruits 8x500g £x.xx ?

我想应用产品为特定价格的次数的countif样式函数,并将其作为新列附加到currentmonthitemcodes数据框。例如,如果三个客户在ITEMCODE 032105 df中为currentmonthprice支付5.00英镑,则对于该代码,第二个数据框的附加值将为3。有任何想法吗?

非常感谢

1 个答案:

答案 0 :(得分:2)

left_join(df2, df1 %>% group_by(ITEMCODE, PRICE) %>% summarise(count = n()))

您可以按照项目代码和价格进行简单的左连接,并计算出现次数。

     ITEMCODE         ITEMDESCRIPTION PRICE count
1    32105  Basic Berry Mix10x400g £x.xx     1
2    55800      Blueberries 8x400g £x.xx     1
3    55801      Raspberries 8x350g £x.xx     1
4    55802 Straw/Blueberries8x400g £x.xx     1
5    55803      Cherries DS 8x500g £x.xx     1
6    55804    Summer Fruits 8x500g £x.xx     1

这看起来像这样:

{{1}}