确定与特定订单 ID 相关的列中的最大值

Determine maximum value in column related to specific order id

对于在线订单的数据,我必须确定单独订单的篮子大小。我掌握的信息在 product_number_within_order per order_id 上。例如,对于订单 ID 123456,有 7 个变量 product_number_within_order 1 到 7(因此篮子大​​小是最大值 product_number_within_order)。对于每个订单 ID,篮子大小应该放在数据 table 中。我怎样才能最好地计算这个? order_id 的顺序不对,这让我很难编程。现在我有了以下内容,但是 运行 这需要很长时间,所以它对我来说似乎不是最佳选择。

vec <- data.frame(table(unlist(data5$order_id)))

给出了每个订单的篮子大小(因为它计算了 order_id 被提及的次数)

    Var1 Freq
1      24409499    2
2      37018675    1
3      49812254    1
4      72349794    1
5     121649820    2
6     123680104    3
7     156423543   11

和下面的代码来确定篮子的大小

for (i in 1:length(data5$order_id)) {
  for (j in 1:length(vec$Var1))
  if (data5$order_id[i] != vec$Var1[j]) {
    size <- vec$Freq[j]
    data5$basketsize[i] <- size
  } 
}

对于某些 order_id 来说它有效,但对于其他人来说它是完全错误的。有谁知道如何更有效地做到这一点或错误在哪里?

假设data5是一个包含变量order_id的数据框,你可以简单地:

library(dplyr)

data5 %>% 
  group_by(order_id) %>% 
  summarise(size=n())

例如,这里我制作了一个示例数据集并应用了上述函数:

> data5 = tibble(order_id = sample(1:5, size=15, replace=T), other_var = 1:15)
> data5
# A tibble: 15 × 2
   order_id other_var
      <int>     <int>
 1        3         1
 2        2         2
 3        2         3
 4        4         4
 5        2         5
 6        1         6
 7        3         7
 8        3         8
 9        5         9
10        1        10
11        2        11
12        3        12
13        4        13
14        5        14
15        3        15
> data5 %>% 
  group_by(order_id) %>% 
  summarise(size=n())
# A tibble: 5 × 2
  order_id  size
     <int> <int>
1        1     2
2        2     4
3        3     5
4        4     2
5        5     2