aggregate(value ~ Vertical+ OLorPL, mdata,sum,na.rm=TRUE)
上面的代码有效,但它在总和中包含一个“水平”列。我想汇总所有记录,汇总值,但不包括mdata $ Horizontal ==“xyz”的记录
答案 0 :(得分:1)
我希望你会注意到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
子集以删除“cyl”和“gear”等于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)
答案 1 :(得分:0)
只需从data
aggregate(value ~ Vertical+ OLorPL, mdata[mdata$Horizontal != 'xyz',],sum,na.rm=TRUE)