如何从另一个表中汇总信息。示例:表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;
答案 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,然后使用merge
和X
:
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")