在R dataframe中,如何搜索以前的事务信息
假设我有一个R数据帧。每行代表某人在特定日期进行的交易。有许多栏有更多关于交易的信息,例如他/她花的钱和他/她购买的商品数量。一个人可能有许多事务,因此一个人可能有几行。假设我想要一个列,记录客户在上一笔交易中的花费。现在,我使用For循环查看整个数据帧,以检查该客户是否有以前的交易。如果客户有以前的交易,则我向该字段添加值;如果没有,我就跳到下一排。它可以工作,但我正在处理一个超过170万行的数据帧,因此for循环对我来说太慢了。在R dataframe中,如何搜索以前的事务信息,r,bigdata,R,Bigdata,假设我有一个R数据帧。每行代表某人在特定日期进行的交易。有许多栏有更多关于交易的信息,例如他/她花的钱和他/她购买的商品数量。一个人可能有许多事务,因此一个人可能有几行。假设我想要一个列,记录客户在上一笔交易中的花费。现在,我使用For循环查看整个数据帧,以检查该客户是否有以前的交易。如果客户有以前的交易,则我向该字段添加值;如果没有,我就跳到下一排。它可以工作,但我正在处理一个超过170万行的数据帧,因此for循环对我来说太慢了。 你有没有更好的办法来解决这个问题?感谢 假设您有这样一个dat
你有没有更好的办法来解决这个问题?感谢 假设您有这样一个
data.frame
library(dplyr)
df <- read.table(header = TRUE, text = "
CustId transaction Spent
ID1 1 500
ID1 2 706
ID1 3 925
ID1 4 1195
ID1 5 1472
ID1 6 1413
ID2 1 950
ID2 2 1203
ID2 3 1486
ID2 4 1658")
df%>%group_by(CustId)%>%dplyr::mutate(Last=Spent[transaction==max(transaction)])
CustId transaction Spent Last
<fctr> <int> <int> <int>
1 ID1 1 500 1413
2 ID1 2 706 1413
3 ID1 3 925 1413
4 ID1 4 1195 1413
5 ID1 5 1472 1413
6 ID1 6 1413 1413
7 ID2 1 950 1658
8 ID2 2 1203 1658
9 ID2 3 1486 1658
10 ID2 4 1658 1658
库(dplyr)
df%group_by(CustId)%%>%dplyr::mutate(最后一次=花费[事务==最大(事务)])
上一次使用的CustId事务
1 ID1 1500 1413
2 ID1 2 706 1413
3 ID1 3 925 1413
4 ID1 4 1195 1413
5 ID1 5 1472 1413
6 ID1 6 1413 1413
7 ID2 1 950 1658
8 ID2 2 1203 1658
9 ID2 3 1486 1658
10 ID2 4 1658 1658
如果您提供某种类型的示例输入数据和所需的输出,以便测试可能的解决方案,那么就更容易为您提供帮助。它不必是完整的,但至少有一些东西可以玩是有用的,不那么抽象。我的理解是OP对以前交易的金额感兴趣:df%>%groupby(CustId)%%>%mutate(Last=lag(spend))
@HubertLc只是一个猜测~~