带有ifelse的聚合函数

时间:2019-04-04 15:54:46

标签: r

我想获取每个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
....

1 个答案:

答案 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)

希望它为您服务。