在R中创建条件子表

时间:2016-11-15 13:31:50

标签: r

我有下表(这只是一个示例):

custNbr   channel   custBranchNbr   totalTransactions
  1         Web        901           7
  2         store      903           5
  3         Cel        901           10
  etc...

我想创建" sub_table"总结了每个custBranchNbr中以特定渠道为条件的交易数量(仅限Web + Cel);像这样的东西:

custBranchNbr  sum(totalTransaction)
    901             17

我知道如何使用条件求和(如:sum(DF[which(DF[,1]>30 & DF[,4]>90),2])),但我不知道如何实现这一点来获得"子表"我上面说过。

您的帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

使用聚合函数

sub_table <- aggregate(custBranchNbr, df[df$channel %in% c('Web', 'Cel'), ], sum)

答案 1 :(得分:0)

我们也可以使用library(dplyr)执行此操作:

df %>% filter(channel %in% c("Web", "Cel") %>%
                  group_by(custBranchNbr) %>%
                  summarise(sum_totalTransactions = sum(totalTransactions))
# A tibble: 1 × 2
  custBranchNbr sum_totalTransactions
          <int>                 <int>
1           901                    17

答案 2 :(得分:0)

使用data.table

的选项
library(data.table)
setDT(df)[channel %chin% c('Web', 'Cel'),  .(Sum = sum(totalTransaction)).( , custBranchNbr]