我一直在寻找这一段时间,但一直没能找到明确的答案。可能一直在寻找错误的条件,但也许这里有人可以快速帮助我。这个问题是基本的。计算小计(总和,stdev,平均等)
的样本数据集:
set <- structure(list(VarName = structure(c(1L, 5L, 4L, 2L, 3L),
.Label = c("Apple/Blue/Nice",
"Apple/Blue/Ugly", "Apple/Pink/Ugly", "Kiwi/Blue/Ugly", "Pear/Blue/Ugly"
), class = "factor"), Color = structure(c(1L, 1L, 1L, 1L, 2L), .Label = c("Blue",
"Pink"), class = "factor"), Qty = c(45L, 34L, 46L, 21L, 38L)), .Names = c("VarName",
"Color", "Qty"), class = "data.frame", row.names = c(NA, -5L))
这给出了一个数据集,如:
set
VarName Color Qty
1 Apple/Blue/Nice Blue 45
2 Pear/Blue/Ugly Blue 34
3 Kiwi/Blue/Ugly Blue 46
4 Apple/Blue/Ugly Blue 21
5 Apple/Pink/Ugly Pink 38
我想这样做是相当直截了当。我想总结(或平均或stdev)数量列。但是,我也想这样做在下列条件下相同的操作:
- VarName中包含“苹果”
- VarName中包括“丑陋”
- 颜色等于“蓝”
任何人这可以让我快速介绍如何执行这种计算?
我知道一些它可以通过聚合()函数来完成,例如:
aggregate(set[3], FUN=sum, by=set[2])[1,2]
不过,我相信有这样做那么这更直接的方式。是否有一些过滤器可以添加到像sum()
这样的功能?
很好的解释+1来完成。 –
谢谢你的解释。在学习期间,我发现了一些东西。这似乎给了一个NaN答案:“mean(new_set [new_set $ V2 ==”Blue“&& new_set $ V3 ==”Ugly“,] $ Qty)”。不确定为什么会发生这种情况。 – Jochem
@Jochem Opps,我有&&'而不是'&'。 '&&'与媒介不搭配。 – csgillespie