首页 > 解决方案 > 'Sum' 函数返回 TRUE 或 FALSE 值而不是数字?

问题描述

我正在尝试根据以下数据创建频率表。

> order_x
# A tibble: 16 x 5 
   Order_ID Product           Price Quantity total
      <int> <chr>             <dbl>    <int> <dbl>
 1     4299 Vegetarian Pizza   11.0        2  22.0
 2     4299 Hawaiian Pizza     12.0        3  35.8
 3     4299 Meatlovers Pizza   14.0        1  14.0
 4     1209 Margherita Pizza   11.0        2  22.0
 5     3899 Meatlovers Pizza   14.0        1  14.0
 6     2780 Seafood Pizza      14.0        2  28.0
 7     2780 Pepperoni Pizza    13.0        1  13.0
 8     2780 BBQ Chicken Pizza  15.0        3  44.8
 9     2780 Vegetarian Pizza   11.0        1  11.0

获取“频率”列的代码如下。

table$Frequency <- sum(as.numeric(order_x$Quantity[order_x$Product == table$Pizza]))

它返回这个(这是我卡住的地方)。

> table
               Pizza Frequency 
1:  Meatlovers Pizza      TRUE         
2:     Supreme Pizza      TRUE         
3: BBQ Chicken Pizza      TRUE         
4:     Seafood Pizza      TRUE         
5:  Vegetarian Pizza      TRUE         
6:  Margherita Pizza      TRUE         
7:    Hawaiian Pizza      TRUE        
8:   Pepperoni Pizza      TRUE         

而不是“真”,我希望它是每个产品类别的数量值的总和。

干杯。

标签: r

解决方案


感谢Edward评论中说:

这么多方法。使用by, tapply, aggregate,然后有 dplyr (group_by %>% summarise),...这里有很多关于这个问题的答案。

我在这里完全忘记了 dyplyr group_by 的功能。使用它,它工作得很好。


推荐阅读