gpt4 book ai didi

r - 从另一个数据帧中减去具有条件的数据帧中的值

转载 作者:行者123 更新时间:2023-12-04 08:51:10 24 4
gpt4 key购买 nike

我有两个数据框,其中包含来自水果店的销售数据。
第一个数据框包含来自“商店 A”的销售数据,
并且第二个数据框具有从“商店 A + 商店 B”收集的数据

StoreA = data.frame(
Fruits = c('Apple', 'Banana', 'Blueberry'),
Customer = c('John', 'Peter', 'Jenny'),
Quantity = c(2, 3, 1)
)
Total = data.frame(
Fruits = c('Blueberry', 'Apple', 'Banana', 'Blueberry', 'Pineapple'),
Customer = c('Jenny' , 'John', 'Peter', 'John', 'Peter'),
Quantity = c(4, 7, 3, 5, 3)
)

StoreA
Total
我希望从“总计”中减去“StoreA”的销售数据以获得“StoreB”的销售数据。
最后,我希望有类似的东西
enter image description here

最佳答案

好问题!有一种简单而优雅的方法可以准确地实现您想要的。
这个问题的标题是:"subtracting values in a data frame with conditons() from another data frame"这个减法可以像标题所说的那样完成。但是有比使用减法更好的方法。将减法问题转化为加法问题通常是解决问题的最简单方法。
要将其变成加法问题,只需转换其中一个数据帧 (StoreA$Quantity)成负值。只转换 Quantity变量为负值。然后将另一个数据框( Total )重命名为 StoreB.一旦完成,就很容易完成了。只需对两个数据框使用连接函数 (StoreA & StoreB) .这样做将负值和正值结合在一起,数据更容易理解。当存在正负值相同的东西时,很明显这些东西需要结合起来。
要组合这些相似的项目,请使用 group_by()函数并将其通过管道传输到 summarize()功能。以这种方式进行编码使代码易于阅读和理解。代码几乎可以像一本书一样阅读。
创建数据框:

StoreA = data.frame(Fruits = c('Apple', 'Banana', 'Blueberry'), Customer = c('John', 'Peter', 'Jenny'), Quantity = c(2,3,1))
StoreB = data.frame(Fruits = c('Blueberry','Apple', 'Banana', 'Blueberry', 'Pineapple'), Customer = c('Jenny' ,'John', 'Peter', 'John', 'Peter'), Quantity = c(4,7,3,5,3))
将 StoreA$Quantity 转换为负值:
StoreA_ <- StoreA
StoreA_Quanity <- StoreA$Quantity * -1
StoreA_
StoreA_ 现在看起来像这样:
Fruits    Customer  Quantity
<fct> <fct> <dbl>
Apple John -2
Banana Peter -3
Blueberry Jenny -1
现在合并 StoreA 和 StoreB。使用 full_join()加入两个商店的功能:
Total <- full_join(StoreA_, StoreB, disparse = 0)
Total
最后一件事是使用 group_by 函数完成的。这会将正值和负值组合在一起。
Total %>% group_by(Fruits, Customer) %>% summarize(s = sum(Quantity))
完成!输出显示在此 link:

关于r - 从另一个数据帧中减去具有条件的数据帧中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64097173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com