在R数据框中,如何搜索以前的交易信息

Posted

技术标签:

【中文标题】在R数据框中,如何搜索以前的交易信息【英文标题】:In R dataframe, how to search for previous transaction information 【发布时间】:2017-07-05 21:04:42 【问题描述】:

假设我有一个 R 数据框。每行代表某人在特定日期进行的交易。有很多栏目有更多关于交易的信息,例如他/她花费的钱和他/她购买的商品数量。一个人可能有许多事务,因此一个人可能有几行。假设我想要一列记录客户在上次交易中花费了多少。现在,我正在使用 for 循环来查看整个数据框,以检查该客户是否有以前的交易。如果客户有之前的交易,那么我将值添加到该字段;如果没有,我就跳到下一行。它可以工作,但我正在处理一个包含超过 170 万行的数据框,因此 for 循环对我来说太慢了。 你有更好的想法解决这个问题吗?欣赏!!!

【问题讨论】:

如果您提供某种reproducible example 与示例输入数据和所需的输出,以便可以测试可能的解决方案,它会更容易帮助您。它不必是全尺寸的,但至少有一些东西可以玩是有用的并且不那么抽象。 【参考方案1】:

假设你有这样的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

【讨论】:

我的理解是OP对之前交易的金额感兴趣:df%&gt;%group_by(CustId)%&gt;%mutate(Last=lag(Spent)) @HubertLc 只是猜测~~

以上是关于在R数据框中,如何搜索以前的交易信息的主要内容,如果未能解决你的问题,请参考以下文章

如何读取 R feom 数据框中的事务?

如何在 2 个数据框中映射和计算项目的出现次数

如何从交易收据重新创建原始交易以验证 v,r,s 签名?

R语言关联规则模型(Apriori算法)挖掘杂货店的交易数据与交互可视化

如何从上次交易中获得价值,但不是今天的交易

如何预处理交易数据以预测购买概率?