来自另一个表的总和信息

时间:2018-02-02 10:55:40

标签: r sum left-join

如何从另一个表中汇总信息。示例:表Y具有销售值,该值在表X中通过列#34; ID"总和。

表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,250,250,300,300,150,300,150)
Y <- data.frame(Id,sale_value)

我需要在tabela X中添加一个名为&#34; Sale_total&#34;的列,将表Y中的值相加(列#34; sale_values&#34;),通过列&#34; Id&#34;

3 个答案:

答案 0 :(得分:1)

看起来你需要加入,然后聚合。这是data.table的一种方式:

library( data.table )
setDT( X )
setDT( Y )

加入Id,然后汇总按Id

分组的值
X[Y, on = "Id"][ , sum( sale_value ), by = Id ]

   Id  V1
1:  1 750
2: 25 900
3: 30 300

答案 1 :(得分:1)

您可以在基础R中使用aggregate Y,然后使用mergeX

merge(X, aggregate(sale_value ~ Id, Y, sum), by = 'Id')

结果:

  Id Product sale_value
1  1   Shirt        750
2 25   Pants        900
3 30  Shorts        300

或来自dplyr的<{1}}左侧加入:

tidyverse

答案 2 :(得分:0)

此外,您可以使用sqldf

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