如何匹配R中子集的最小值,然后进行查找? 输入
我有按客户和订单细分的数据,例如如何匹配R中子集的最小值,然后进行查找? 输入,r,merge,aggregate,lookup,R,Merge,Aggregate,Lookup,我有按客户和订单细分的数据,例如 Customer_ID Order_Source Date_of_order 1 Online 03/01/2017 1 Phone 02/01/2017 1 Store 01/01/2017 2 Fax 02/01/2017 2 Phone 01/01/2017 输出 我的目标是: 查找每
Customer_ID Order_Source Date_of_order
1 Online 03/01/2017
1 Phone 02/01/2017
1 Store 01/01/2017
2 Fax 02/01/2017
2 Phone 01/01/2017
输出
我的目标是:
我的问题是,如何从这样的子集的最小值进行查找?我们可以在按“客户ID”分组后执行此操作,将“订单日期”转换为
Date
类,获取最小“日期”的索引(which.min
),获取“Order_Source”和mutate
的相应值以创建新列
library(dplyr)
df1 %>%
group_by(Customer_ID) %>%
mutate(First_Order_Source = Order_Source[which.min(as.Date(Date_of_order, "%m/%d/%Y"))])
# Customer_ID Order_Source Date_of_order First_Order_Source
# <int> <chr> <chr> <chr>
#1 1 Online 03/01/2017 Store
#2 1 Phone 02/01/2017 Store
#3 1 Store 01/01/2017 Store
#4 2 Fax 02/01/2017 Phone
#5 2 Phone 01/01/2017 Phone
库(dplyr)
df1%>%
分组依据(客户ID)%>%
变异(第一个订单来源=订单来源[哪个.min(作为.Date(订单的日期,“%m/%d/%Y”))))
#客户ID订单来源日期第一批订单来源
#
#1 1在线商店2017年1月3日
#2 1电话2017年1月2日商店
#3 1商店2017年1月1日商店
#4.2传真2017年1月2日电话
#5.2电话2017年1月1日电话
我们可以在按“客户ID”分组后执行此操作,将“订单日期”转换为Date
类,获取最小“日期”的索引(which.min
),获取“订单来源”的对应值,并修改
以创建新列
library(dplyr)
df1 %>%
group_by(Customer_ID) %>%
mutate(First_Order_Source = Order_Source[which.min(as.Date(Date_of_order, "%m/%d/%Y"))])
# Customer_ID Order_Source Date_of_order First_Order_Source
# <int> <chr> <chr> <chr>
#1 1 Online 03/01/2017 Store
#2 1 Phone 02/01/2017 Store
#3 1 Store 01/01/2017 Store
#4 2 Fax 02/01/2017 Phone
#5 2 Phone 01/01/2017 Phone
库(dplyr)
df1%>%
分组依据(客户ID)%>%
变异(第一个订单来源=订单来源[哪个.min(作为.Date(订单的日期,“%m/%d/%Y”))))
#客户ID订单来源日期第一批订单来源
#
#1 1在线商店2017年1月3日
#2 1电话2017年1月2日商店
#3 1商店2017年1月1日商店
#4.2传真2017年1月2日电话
#5.2电话2017年1月1日电话
这里有一个基本的R方法,使用ave
按客户分组:
df <- within(df, {
Date_of_order <- as.Date(Date_of_order, format = "%d/%m/%Y")
first_order <- Order_Source[ave(as.integer(Date_of_order), Customer_ID, FUN = which.min)]
})
df这里有一个基本R方法,使用ave
按客户分组:
df <- within(df, {
Date_of_order <- as.Date(Date_of_order, format = "%d/%m/%Y")
first_order <- Order_Source[ave(as.integer(Date_of_order), Customer_ID, FUN = which.min)]
})
df@989:很好。我本应该包括我的尝试,但我恐怕在我发布的机器上没有代码。@989:说得好。我本应该包括我的尝试,但我恐怕在我发布的机器上没有代码。