如何使用条件对另一个表中的信息求和。示例:表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
中的值进行求和。仅当列month
为jan
。
答案 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