我有以下数据集,已经按交易排序:
dataset <- data.frame(id = c(1,2,3,4,2,4,6,7,3,2),
transaction = c(1,2,3,4,5,6,7,8,9,10),
amount = c(200,100,50,100,50,300,100,50,100,50))
Run Code Online (Sandbox Code Playgroud)
如您所见,每个客户都有一个 ID 和在交易中花费的金额。
我的问题是,如何确定客户是交易中的新客户还是经常性客户。新客户意味着这是它的第一笔交易,接下来的交易是经常性的。
recurrence_status <- c("new","new","new","new","recurrent",
"recurrent","new","new","recurrent","recurrent")
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经尝试了以下方法:
for (i in 1:(length(dataset$transaction)-1)){
for(j in 2:length(dataset$transaction)){
j <- j + 1
comp <- dataset[j:length(dataset$id)]
ifelse((is.element(dataset[i,1]),comp),"recurrent","new")
}
}
Run Code Online (Sandbox Code Playgroud)
但是由于括号,它给了我一个错误。我知道应该尽可能避免在 R 中使用循环。请,任何帮助将受到欢迎。
问候,
在base R,这可以用duplicated
dataset$recurrence_status <- c("new", "recurrent")[duplicated(dataset$id) + 1]
dataset$recurrence_status
#[1] "new" "new" "new" "new" "recurrent" "recurrent" "new" "new" "recurrent"
#[10] "recurrent"
Run Code Online (Sandbox Code Playgroud)