Agregar columna personalizada con la función If

Un usuario Pregunto ✅

olitetu

Estoy tratando de agregar una columna que devuelve valores según el rango en el que se ajuste el valor de otra columna.

Intenté lo siguiente:

= Table.AddColumn(#»Columnas renombradas», «Grupo reciente»,
cada uno si [Recence] < "30" luego "5"
más si [Recence] < "90" y luego "4"
más si [Recence] < "180" y luego "3"
más si [Recence] < "270" y luego "2"
más si [Recence] < "360" y luego "1"
más «0»)

Pero los valores devueltos son solo 5 y 4. Todos los que tienen 3, 2, 1 caen automáticamente a 0.

edhans

En respuesta a olitetu

es el [Recence] campo una cadena? si es asi deberia decir

si Número.Desde([Recence]) < 30, etc

No puede comparar números con texto. Obtendrá errores. Sospecho que es porque antes no recibías errores, así que [Recence] debe ser texto también.

Además, si [Recence] debe ser un número completo, simplemente convierta el campo en un número. En la parte superior izquierda de la columna probablemente tiene ABC para el texto. Haga clic en eso y conviértalo en un número decimal o en un número entero. Entonces no tienes que usar Number.From() a su alrededor. Hágalo muy temprano en los pasos de Power Query, antes de agregar columnas personalizadas.

edhans

Deberías comparar valores. Cuando Power Query realiza una comparación de cadenas, «3» es menor que «4», pero «300» también es menor que «4» porque «300» se ordenará antes que «4» en orden ascendente. Creo que está mirando los valores ASCII de los caracteres.

Debe convertir todo a números o usar Number.From() alrededor de ambos [Recence] y sus cadenas que está comparando.

olitetu

En respuesta a edhans

Cambié el tipo de datos a «Números enteros», pero ahora recibo errores en todas partes (antes de que se mostraran «4» y «5»).

= Table.AddColumn(#»Columnas renombradas», «Grupo reciente»,
cada uno si [Recence] < 30 luego "5"
más si [Recence] < 90 luego "4"
más si [Recence] < 180 luego "3"
más si [Recence] < 270 luego "2"
más si [Recence] < 360 luego "1"
más «0»))

edhans

En respuesta a olitetu

es el [Recence] campo una cadena? si es asi deberia decir

si Número.Desde([Recence]) < 30, etc

No puede comparar números con texto. Obtendrá errores. Sospecho que es porque antes no recibías errores, así que [Recence] debe ser texto también.

Además, si [Recence] debe ser un número completo, simplemente convierta el campo en un número. En la parte superior izquierda de la columna probablemente tiene ABC para el texto. Haga clic en eso y conviértalo en un número decimal o en un número entero. Entonces no tienes que usar Number.From() a su alrededor. Hágalo muy temprano en los pasos de Power Query, antes de agregar columnas personalizadas.

olitetu

En respuesta a edhans

= Table.AddColumn(#»Valor reemplazado26″, «_RecenceG»,
cada si Número.Desde[Recence] < 30 luego 5
otra cosa si Número.Desde[Recence] < 90 luego 4
otra cosa si Número.Desde[Recence] < 180 luego 3
otra cosa si Número.Desde[Recence] < 270 luego 2
otra cosa si Número.Desde[Recence] < 360 luego 1
más 0)

Probé esta sintaxis y sigo recibiendo errores.

La columna Recence se cambió a valores, pero la columna personalizada la vuelve a cambiar a texto.

Lo siento, no entiendo lo que está pasando.

edhans

En respuesta a olitetu

te faltan los paréntesis

= Table.AddColumn(#"Replaced Value26", "_RecenceG",
each if Number.From([Recence]) < 30 then 5
else if Number.From([Recence]) < 90 then 4
else if Number.From([Recence]) < 180 then 3
else if Number.From([Recence]) < 270 then 2
else if Number.From([Recence]) < 360 then 1
else 0)

picante

Poner comillas alrededor de los valores hará que se traten como texto. Obtendrá un comportamiento inusual. Desea tratar esos valores como números

EstebanK

No puede aplicar operadores menor que/mayor que en un tipo de datos de cadena/texto. Cambie la columna Recence a un tipo de datos numérico.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *