简体   繁体   English

R中“ ifelse”语句内的“聚合”函数

[英]“aggregate” function inside of “ifelse” statement in R

I am trying to used "aggregate" function inside of "ifelse" statement in R. I want to return NA if min sale is equal to 0 then if not aggregate it. 我正在尝试在R中的“ ifelse”语句内使用“聚合”函数。如果min sale等于0,那么我想返回NA,否则不进行聚合。 like the codes below: 像下面的代码:

 df <- data.frame(day=c("Mon","Tue","Mon","Tue","Tue","Tue"),sales=c(799,1359,1359,1359,1359,1359))
df2 <- ifelse(min(df$sales)==0,NA,aggregate(sales~day,data=df,sum))

My problem is that it return this: 我的问题是它返回此:

[[1]]
[1] Mon Tue
Levels: Mon Tue

I want it to to return a data frame like usually aggregate: 我希望它返回通常聚合的数据框:

 day sales
1 Mon  2158
2 Tue  5436

除了@ A.Webb的注释,我想您还想使用匿名函数将if内部aggregate放入:

aggregate(sales ~ day, data=df, function(x) if(min(x)==0) NA else sum(x) )  

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM