具有条件的两个表之间的总和值

时间:2018-02-05 10:49:54

标签: r sum left-join conditional-statements

如何使用条件对另一个表中的信息求和。示例:表Y具有销售值,当月份为ID时,我需要在表格X中汇总列jan中的值。

表X

Id <- c(1,25,30)
Product <- c("Shirt", "Pants", "Shorts")
X <- data.frame(Id, Product)

表Y

Id <- c(1,1,1,25,25,30,25,30)
sale_value <- c(250,650,250,300,300,150,300,150)
month <- c("jan","jan","feb","jan","jan","jan","jan","feb")
Y <- data.frame(Id,sale_value, month)

我需要在表格X中添加一个名为Sale_total的列,对表Y(列sale_values),列Id中的值进行求和。仅当列monthjan

2 个答案:

答案 0 :(得分:0)

如评论中所述,您可以为your previous question的答案添加条件。对于sqldf案例,您可以执行以下操作:

X <- sqldf("SELECT X.Id, X.Product, sum(Y.sale_value)
       FROM X JOIN Y on X.Id = Y.Id
       WHERE Y.month = 'jan'
       GROUP BY X.Id, X.Product")

WHERE Y.month = 'jan'的条件已添加到查询中。

答案 1 :(得分:0)

使用dplyr修改我的filter代码{/ 1}}:

X %>% 
  left_join(Y %>% 
              filter(month == 'jan') %>% 
              group_by(Id) %>% 
              summarise(sale_total = sum(sale_value)),
            by = 'Id')

结果:

  Id Product sale_total
1  1   Shirt        900
2 25   Pants        900
3 30  Shorts        150