-1
aggregate(value ~ Vertical+ OLorPL, mdata,sum,na.rm=TRUE)
上面的代码工作,但它包括一个“水平”列中的总和。我要汇总的所有记录,总结价值,但排除MDATA $水平==“XYZ”聚合一个子集
aggregate(value ~ Vertical+ OLorPL, mdata,sum,na.rm=TRUE)
上面的代码工作,但它包括一个“水平”列中的总和。我要汇总的所有记录,总结价值,但排除MDATA $水平==“XYZ”聚合一个子集
只需从data
排除这些记录的记录:
aggregate(value ~ Vertical+ OLorPL, mdata[mdata$Horizontal != 'xyz',],sum,na.rm=TRUE)
我希望你已经注意到了, aggregate
函数确实有一个subset
的说法。
比较:
从 “mtcars” 数据集无子集。
aggregate(mpg ~ cyl + gear, mtcars, mean)
# cyl gear mpg
# 1 4 3 21.500
# 2 6 3 19.750
# 3 8 3 15.050
# 4 4 4 26.925
# 5 6 4 19.750
# 6 4 5 28.200
# 7 6 5 19.700
# 8 8 5 15.400
子集下降,其中“团”和“齿轮”等于4的所有行:
aggregate(mpg ~ cyl + gear, mtcars, mean,
subset=c(!cyl %in% 4 & !gear %in% 4))
# cyl gear mpg
# 1 6 3 19.75
# 2 8 3 15.05
# 3 6 5 19.70
# 4 8 5 15.40
这应该给你同样的结果@ MatthewLundberg的做法,这将是这样的:
aggregate(mpg ~ cyl + gear,
mtcars[!mtcars$cyl %in% 4 & !mtcars$gear %in% 4, ],
mean)
事实上,我没有注意到这一点。你知道这个选项有什么问题吗? –
@MatthewLundberg,不知道我自己 - 我没有看过'stats ::: aggregate.formula'的代码,看看它是如何实现的。 – A5C1D2H2I1M1N2O1R2T1