У меня есть этот фрагмент кода, который я могу запустить для одного фрейма данных.Тем не менее, я хотел бы иметь возможность зациклить его по списку фреймов данных.
Это базовый код:
# Run RFM Analysis on df_0
df_1 <- rfm_table_order(df_0, customer = customer_id, order_date = txn_date, revenue = txn_price, analysis_date = analysis_date,
recency_bins=3, frequency_bins=3, monetary_bins=3)
df_2 <- as.data.frame(df_1$rfm)
# Add weighting to the scores
df_2$finalscore <- (df_2 $recency_score*3 + df_2 $frequency_score*2 + df_2 $monetary_score*3)/8
# Add labels according to weighted score
df_2<- df_2 %>%
mutate(segment = case_when(
.$finalscore >= 2.5 ~ "Loyal",
.$finalscore <= 1.5 ~ "Lapsed",
TRUE ~ "Regular"
))
# Add the analysis date
df_2$analysis_date <- rep(analysis_date,nrow(df_2))
# Output the final dataset with required rows
df_final <- df_2[,c("customer_id","segment","analysis_date")]
df_0 выглядит так:
customer_id txn_date txn_price category
123 01/01/2019 12 a
456 01/02/2019 7 b
...
После запуска вышеуказанного кода, df_final выглядит так:
customer_id segment analysis_date
123 Loyals 01/05/2019
456 Loyals 01/05/2019
...
Я хотел посмотреть, как будут отличаться результаты, если я использую категорию в качестве фактора.Из-за этого я составил список фреймов данных.
cat_list <- split(df_0, as.factor(df_0$category))
Мне нужно добавить цикл, который работает со списком фреймов данных.Последний шаг в цикле должен также добавить имя фрейма данных в результат.
Желаемый вывод:
customer_id segment category analysis_date
123 Loyals a 01/05/2019
456 Loyals b 01/05/2019
...