Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 具有条件的两个表之间的和值_R_Sum_Left Join_Conditional Statements - Fatal编程技术网

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

R 具有条件的两个表之间的和值,r,sum,left-join,conditional-statements,R,Sum,Left Join,Conditional Statements,如何使用条件对另一个表中的信息求和。示例:表Y包含销售值,当月份为jan时,我需要在表X中求和ID列中的值 表十 Id <- c(1,25,30) Product <- c("Shirt", "Pants", "Shorts") X <- data.frame(Id, Product) Id如注释中所述,您可以向的答案添加一个条件。对于sqldfcase,您可以按如下方式执行: X <- sqldf("SELECT X.Id, X.Product, sum(Y.sale

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

表十

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

Id如注释中所述,您可以向的答案添加一个条件。对于
sqldf
case,您可以按如下方式执行:

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")

X使用
过滤器调整my
dplyr
代码:

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
这几乎是相同的。你是怎样试图改变这个答案的?您是否尝试过类似于
merge(X,聚合(sale_value~Id,Y[Y$month=='jan',],sum),by='Id')
?尝试
merge(X,聚合(sale_value~Id,subset(Y,month=='jan'),sum),by='Id')
  Id Product sale_total
1  1   Shirt        900
2 25   Pants        900
3 30  Shorts        150