我正在尝试使用"聚合"功能内部" ifelse" R中的陈述 如果最小销售额等于0,我想返回NA,如果没有汇总则返回NA。比如下面的代码:
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))
我的问题是它返回了这个:
[[1]]
[1] Mon Tue
Levels: Mon Tue
我希望它返回一个通常聚合的数据框:
day sales
1 Mon 2158
2 Tue 5436
答案 0 :(得分:3)
除了@ A.Webb的评论之外,我想你想使用匿名函数将if
置于aggregate
内:
aggregate(sales ~ day, data=df, function(x) if(min(x)==0) NA else sum(x) )