在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%>%group_by(CustId)%>%mutate(Last=lag(Spent))
@HubertLc 只是猜测~~以上是关于在R数据框中,如何搜索以前的交易信息的主要内容,如果未能解决你的问题,请参考以下文章