0

对于营销课程,我必须编写一个函数来计算客户的保留率(客户仍然是客户的概率)。到目前为止,我已经隔离了各个客户的 id 并将它们存储在矩阵 first.transactions.data 中。然后我使用 split() 将它们分成群组(按时间划分的客户组)并将它们存储在列表群组中。现在我的问题来了:我从名为 final.period.data 的完整数据集中计算了另一个子矩阵,我将在其中计算保留率。但是,因此我必须为每个群组隔离 final.period.data 中的 id。我的导师告诉我,我应该在 final.period.data 中创建一个额外的列,显示 TRUE 或 FALSE,具体取决于队列的 id 和 final.period.data 的 id 是否相同。为此,我尝试使用存在,但我总是收到错误消息。我尝试了以下方法:

final.period.data <- if(exists(cohort$'1'$id, where = final.period.data$id) final.period.data$same = TRUE)

但总是收到错误消息,例如:意外符号或无效的第一个参数。我还尝试将列表队列转换为矩阵,但这也无济于事。我如何必须更改存在命令,或者是否有更简单的方法可以在 final.period.data 中找到队列的 ID?

谢谢您的帮助。

4

1 回答 1

0

您可以创建一个执行您想要的功能:

funct <-(final.period.data){
 if (final.period.data$cohort =='1' & final.period.data$id ==<condition2>){
   #Change the number for the TRUE condition}
 else{ #If it doesn't fit the two conditions
  #Change the number for the FALSE condition}
}
vector <- c(nrow(final.period.data))
final.period.data <- cbind(vector)

并将其用作应用功能。Here you will find more information about apply 但我通常使用 for 循环来执行此操作,首先创建新列,然后将其添加到数据框中。

于 2013-11-13T15:18:25.153 回答