Olá pessoal,
Criei uma lista da minha base de dados(painel) para analisar cada cliente individualmente conforme código abaixo:
title: "Untitled"
author: "Saulo"
date: "02/01/2021"
output:
html_document:
toc: yes
toc_float: yes
theme: united
library(tidyverse)
painel <- tibble(codigo = rep(1:10),
nome = c("Joao", "Pedro", "Gabriel", "Aline", "Ruan",
"Ana Clara", "Thiago", "Jessica", "Adriana", "Robson"),
idade = c(18, 25, 33, 50, 27, 48, 21, 60, 36, 75),
profissao_risco = c("NAO", "SIM", "SIM", "NAO","NAO",
"SIM", "SIM", "NAO","NAO","NAO"),
churn= c(0, 0, 1, 0, 0, 1, 1, 0, 0, 0),
insid= c(0, 0, 1, 0, 0, 1, 1, 1, 0, 1),
att_cad= c(0, 0, 1, 1, 0, 0, 0, 1, 1, 0),
proc= c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
mudan= c(1, 0, 0, 1, 1, 0, 0, 0, 1, 0),
med_bvsp= c(1, 1, 1, 0, 1, 0, 1, 1, 0, 1),
med_bmf= c(1, 1, 0, 1, 0, 0, 0, 1, 0, 1),
transf= c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
pat_cust= c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
pat_nett= c(1, 0, 0, 1, 0, 1, 0, 1, 0, 0),
pat_transf= c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
pat_mov= c(1, 0, 0, 0, 1, 1, 0, 1, 0, 1),
dt_bvsp= c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
) %>% mutate(codigo = as.character(codigo))
### Análise individual dos clientes
## Analisando cada cliente individualmente:
lista_cliente = list()
for (i in 1:length(painel$codigo)) {
#i=1
lista_cliente[i] <- list(painel[i,])
# Atribuindo nome a lista
names(lista_cliente)[i] <- list(paste0("cliente", rownames(painel)[i]))
# filtra só as modalidades que o cliente foi alertado:
lista_cliente[[i]] %>%
pivot_longer(
cols = c(5:17),
names_to = "alertas",
values_to = "caiu",
values_drop_na = TRUE
) %>%
filter(caiu == 1) %>%
spread(alertas, caiu) -> lista_cliente[[i]]
}
### cliente - 1
O cliente r lista_cliente[[1]][2]
caiu nos alertas:
r paste0(colnames(lista_cliente[[1]][5:ncol(lista_cliente[[1]])]))
### cliente - 2
O cliente … caiu nos alertas: …
### cliente - (i)
O cliente … caiu nos alertas: …
chegando a este resultado:
No entanto, estou tentando automatizar os “subtítulos e textos” para cada cliente da lista com a função cat() e paste0() conforme código abaixo, mas não estou conseguindo:
## Analisando cada cliente individualmente:
lista_cliente = list()
for (i in 1:length(painel$codigo)) {
#i=1
lista_cliente[i] <- list(painel[i,])
# Atribuindo nome a lista
names(lista_cliente)[i] <- list(paste0("cliente", rownames(painel)[i]))
# filtra só as modalidades que o cliente foi alertado:
lista_cliente[[i]] %>%
pivot_longer(
cols = c(5:17),
names_to = "alertas",
values_to = "caiu",
values_drop_na = TRUE
) %>%
filter(caiu == 1) %>%
spread(alertas, caiu) -> lista_cliente[[i]]
cat("###", "cliente - ", lista_cliente[[i]],
paste0("O cliente ", lista_cliente[[i]][2], " caiu nos alertas: ",
colnames(lista_cliente[[i]][5:ncol(lista_cliente[[i]])])), "\n")
}
Erro: ### cliente - Error in cat(“###”, "cliente - ", lista_cliente[[i]], paste0("O cliente ", :
argumento 3 (tipo ‘list’) não suportado por ‘cat’