2013-11-13 1 views
0

Для класса маркетинга я должен написать функцию, которая рассчитывает скорость хранения клиентов (вероятность того, что клиент все еще является клиентом). Я зашел так далеко, что я изолировал идентификаторы отдельных клиентов и сохранил их в матрице first.transactions.data. Затем я разделил их на когорты (группу клиентов по времени) с помощью split() и сохранил их в списке когорт. Теперь моя проблема: я вычислил другую подматрицу из полного набора данных с именем final.period.data, где я буду вычислять скорость удержания. Однако поэтому я должен изолировать идентификаторы в final.period.data для каждой когорты. Мой инструктор сказал мне, что я должен создать дополнительный столбец в файле final.period.data, который показывает TRUE или FALSE в зависимости от того, совпадают ли идентификатор когорты и идентификатор final.period.data. Для этого я пытался использовать, но я всегда получаю сообщения об ошибках. Я пробовал следующее:Найти аналогичные наблюдения за списком/матрицей в другой матрице

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

но всегда принимает сообщения об ошибках, такие как: неожиданный символ или неверный первый аргумент. Я также попытался преобразовать когорту списка в матрицу, но это тоже не помогло. Как мне изменить команду существования или есть более простой способ найти идентификаторы когорты в файле final.period.data?

Благодарим за помощь.

ответ

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 вы найдете дополнительную информацию о применении Но я обычно делаю это с циклом for, сначала создавая новый столбец, а затем добавляя его в фрейм данных.