对于营销类,我必须编写一个计算客户保留率的函数(客户仍然是客户的概率)。到目前为止,我已经分离了各个客户的ID并将它们存储在矩阵first.transactions.data中。然后我用split()将它们分成同类群组(客户群),并将它们存储在列表群组中。 现在出现了我的问题:我从名为final.period.data的完整数据集中计算了另一个子矩阵,我将计算保留率。但是,因此我必须为每个队列中的final.period.data中的id分隔。我的导师告诉我,我应该在final.period.data中创建一个显示TRUE或FALSE的附加列,具体取决于同类群组的id和final.period.data的id是否相同。为此,我尝试使用exists,但我总是收到错误消息。我尝试了以下方法:
final.period.data <- if(exists(cohort$'1'$id, where = final.period.data$id) final.period.data$same = TRUE)
但始终收到错误消息,例如:意外符号或无效的第一个参数。我也尝试将列表组转换为矩阵,但这也无济于事。我如何更改exists命令或者是否有更简单的方法在final.period.data中找到同类群组的ID?
感谢您的帮助。
答案 0 :(得分: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)
并将其用作apply函数。 Here您会找到有关申请的更多信息吗? 但我通常使用for循环,首先创建新列,然后将其添加到数据框。