es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo acceder a los resultados no agregados cuando se necesita la agregación debido al tamaño del conjunto de datos en R.

Mi tarea es obtener el total de oportunidades de venta entrantes para un grupo de clientes, oportunidades de venta por mes para el mismo grupo de clientes y la tasa de conversión de esas oportunidades.

El conjunto de datos del que estoy extrayendo información contiene 20 millones de registros, por lo que no puedo consultar todo. He logrado completar el primer paso (obtener el recuento total de oportunidades de ventas para cada organización) con esto:

inbound_leads <- domo_get_query(‘6d969e8b-fe3e-46ca-9ba2-21106452eee2’,
auto_limit = TRUE,
query = “select org_id,
COUNT(*)
from table
GROUP BY org_id
ORDER BY org_id”

DOMO es la herramienta de business intelligence de la que extraigo información y domo_get_query es una función interna de una biblioteca personalizada que mi empresa construyó. Esta toma un argumento de consulta, que es una consulta MySQL, y varios otros que no son importantes en este momento.

Los datos de muestra se ven así:

org_id, inserted_at, lead_converted_at
1       10/17/2021    2021-01-27T03:39:03
2       10/18/2021    2021-01-28T03:39:03
1       10/17/2021    2021-01-28T03:39:03
3       10/19/2021    2021-01-29T03:39:03
2       10/18/2021    2021-01-29T03:39:03

He revisado muchos tutoriales en línea de agregación, pero ninguno parece explicar cómo obtener datos necesarios pre-agregación (como el número de oportunidades de venta por mes por organización, lo cual no es posible una vez que ocurre la agregación debido a que la agregación eliminaría la capacidad de ver más de una instancia de la org_id 1, por ejemplo) desde un conjunto de datos que necesita ser agregado para acceder a él en primer lugar. Tal vez simplemente no entiendo lo suficiente para saber las preguntas correctas que hacer. Cualquier dirección es bienvenida.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para obtener el número total de leads por mes para cada organización y las tasas de conversión, necesitamos realizar manipulaciones de datos adicionales utilizando los datos de muestra proporcionados. Aquí están los pasos que podemos seguir:

    1. Convertir las columnas inserted_at y lead_converted_at en objetos Date.
    df$inserted_at <- as.Date(df$inserted_at, format = "%m/%d/%Y")
    df$lead_converted_at <- as.Date(sub("T.+", "", df$lead_converted_at))
    
    1. Crear una nueva columna para los valores de mes de inserted_at.
    df$month <- format(df$inserted_at, format = "%Y-%m")
    
    1. Calcular el número total de leads por organización y por mes.
    leads_per_org_month <- aggregate(inserted_at ~ org_id + month, data = df, FUN = length)
    
    1. Calcular el número de leads convertidos por organización y por mes.
    converted_leads_per_org_month <- aggregate(lead_converted_at ~ org_id + month, data = df, FUN = function(x) sum(!is.na(x)))
    
    1. Combinar los dos dataframes utilizando la función merge.
    leads_and_conversions <- merge(leads_per_org_month, converted_leads_per_org_month, by = c("org_id", "month"), all.x = TRUE)
    
    1. Calcular las tasas de conversión y agregarlas como una nueva columna.
    leads_and_conversions$conversion_rate <- leads_and_conversions$lead_converted_at / leads_and_conversions$inserted_at
    

    Finalmente, el dataframe resultante leads_and_conversions tendrá el número total de leads y conversiones por organización y por mes, junto con la tasa de conversión.

Comments are closed.