我想获取每个MemberID
的数据集中最早的日期。但是我需要在aggregate
函数中进行分类。因为交易记录很多,但是在用户采用移动渠道(Mobile=="1"
)之后,我只需要最早的记录。
aggregate(Mobile$OrderDate, by=list(MemberID=Mobile$MemberID),min)
aggregate(OrderDate ~ MemberID, data=Mobile, function(x) if(Mobile=="1")
min(OrderDate) else NA )
应该是这样的列表:
MEMBERID Date
212 2009/04/20
....
答案 0 :(得分:1)
您可以在subset
函数中使用aggregate
参数来选择数据框的某些部分。但是,您将需要使用公式界面。这是鸢尾花的示例:
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
> aggregate(Sepal.Length ~ Species, iris, subset = iris$Species %in% c("versicolor", "virginica"), min)
Species Sepal.Length
1 versicolor 4.9
2 virginica 4.9
您还没有发布数据的dput(),但我认为这将是这样的:
> aggregate(OrderDate ~ MemberID, Mobile, subset = (Mobile == "1"), min)
希望它为您服务。