¿Cómo crear una nueva columna resumiendo las columnas dadas que contienen ‘_sales’ de manera inteligente?
¿Cómo crear una nueva columna resumiendo las columnas dadas que contienen ‘_ventas’?
El código es el siguiente: el resultado de md %>% rowwise()%>% mutate(sub_total=across(contains("_sales"),sum))
no es lo que quiero. md$sub_total <- md$a_sales+md$b_sales+md$d_sales
puede funcionar, pero es un poco complicado cuando hay más columnas dadas que las actuales.
ori_data <- data.frame(a_sales=c(1:5),
tsalses=c(1:5),
b_sales=c(7:11),
d_sales=c(1:5))
# esto no funciona
md %>% rowwise()%>% mutate(sub_total=across(contains("_sales"),sum))
# esto funciona, pero el código es un poco aburrido
md$sub_total <- md$a_sales+md$b_sales+md$d_sales
davy.ai
Para crear una nueva columna resumiendo columnas dadas que contienen ‘_sales’, se puede usar la función
select()
del paquetedplyr
para seleccionar solo las columnas que contienen ‘_sales’ y luego usar las funcionesrowwise()
ysum()
para sumar los valores de cada fila.Aquí está el código:
Este código primero selecciona solo las columnas que contienen “_sales” usando
select(., contains("_sales"))
. El.
se refiere al marco de datos que se está enviando. Luego, usarowwise()
para realizar la funciónsum()
para cada fila y almacena el resultado en una nueva columna llamada ‘sub_total’.Este enfoque es más eficiente y flexible que especificar manualmente las columnas a sumar, especialmente si el número de columnas es grande o dinámico.