首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cumsum排除某些行

Cumsum排除某些行
EN

Stack Overflow用户
提问于 2017-12-29 08:53:54
回答 1查看 240关注 0票数 0

我有一个问题链接到:Cumsum excluding current value如何应用不包含特定customer.id的cumsum?例如:

代码语言:javascript
复制
order.id   customer.id  Apples   Peaches  Pears
1001       J Car Ltd        1       0       0
1002        Som Comp        1       2       0
1005       Richardson       0       0       1
1004       J Car Ltd        1       0       0
1003       J Car Ltd        2       0       0
1006       Richardson       1       0       1
1007        Aldridge        0       0       1
1008       J Car Ltd        0       0       1
1010        Som Comp        0       1       0

我想应用cumsum来跟踪之前的苹果订单:

代码语言:javascript
复制
Fruits <- Fruits[order(Fruits$order.id), ]  #sort data
Fruits$prev_Apples<-with(Fruits, 
    ave(
        ave(Apples, customer.id, FUN=function(x) c(0, head(cumsum(x), -1))),  #get running sum per customer.id
        interaction(customer.id, order.id, drop=T), 
    FUN=max, na.rm=T) #find largest sum per index per seg
)

但我也想从我的cumsum customer.id Som Comp中排除。对于他,我希望prev_Apples列等于0:

代码语言:javascript
复制
order id    customer id Apples  Peaches Pears   Prev_Apples
1001      J Car Ltd         1       0       0       0
1002      Som Comp        **1**     2       0       0
1003      J Car Ltd         2       0       0       1
1004      J Car Ltd         1       0       0       3
1005      Richards          0       0       1       0
1006      Richards          1       0       1       0
1007      Aldridge          0       0       1       0
1008      J Car Ltd         0       0       1       4
1010      Som Comp          1       0       0     **0**

所以我想添加这行代码:

代码语言:javascript
复制
if(Fruits$customer id =='NULL'){
Prev_Apples = 0
return (Fruits$customer id)
}

当然,我得到的错误是:“条件的长度大于1,只使用第一个元素”

我理解为什么会出现这个错误,但是我怎样才能避免呢?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-29 10:40:01

您忘记了减去Apples列的当前值。在使用代码计算prev_Apples之后,下面的代码应该可以工作。

代码语言:javascript
复制
Fruits$prev_Apples <- Fruits$prev_Apples - Fruits$Apples
Fruits[which(Fruits$customer.id == "Som Comp"), ]$prev_Apples <- 0
#   order.id customer.id Apples Peaches Pears prev_Apples
# 1     1001   J Car Ltd      1       0     0           0
# 2     1002    Som Comp      1       2     0           0
# 5     1003   J Car Ltd      2       0     0           1
# 4     1004   J Car Ltd      1       0     0           3
# 3     1005  Richardson      0       0     1           0
# 6     1006  Richardson      1       0     1           0
# 7     1007    Aldridge      0       0     1           0
# 8     1008   J Car Ltd      0       0     1           4
# 9     1010    Som Comp      0       1     0           0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48016170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档