[R-es] Depuración de código

Clei Y c|e|ver_y@m @end|ng |rom hotm@||@com
Mie Feb 7 02:27:39 CET 2024


Hola a todos

Empleando mis limitados conocimientos de R pude resolver un ejercicio elaborando un c�digo, estoy seguro que se puede simplificar, si alguien tiene alg�n tiempo libre agradecer�a me pudiera ayudar depurando el c�digo, lo adjunto junto con unas tablas que representan el inicio y final.

El ejercicio consiste en calcular la cantidad ideal de los Productos A y B, considerando su precio, el l�mite presupuestario y la utilidad que representan.

Saludos.


### Creamos data_frame de cantidad y utilidad ###

P1 <- data.frame(

"Cantidad"= 0:10,

"UtilidadA" = c("0","15","28","35","40","45","49","53","55","56","56"),

"UtilidadB" = c("0","17","30","37","42","47","51","55","57","58","58"))

Q
UtilidadA
UtilidadB
0
0
0
1
15
17
2
28
30
3
35
37
4
40
42
5
45
47
6
49
51
7
53
55
8
55
57
9
56
58
10
56
58




### Creamos variables de precio y l�mite presupuestario ###

PrecioA <- 12

PrecioB <- 16

L_prep <- 90



### cambiamos clase ###

P1$UtilidadA <- as.numeric(P1$UtilidadA)

P1$UtilidadB <- as.numeric(P1$UtilidadB)



### Creamos vector de gasto en producto A ###

Gasto_PA <- numeric(length(P1$Cantidad))

for(i in 1:length(P1$Cantidad)){

Gasto_PA[i]  <- round((P1$Cantidad[i] *PrecioA),digits = 0)

}



### Creamos vector de unidades B con relaci�n a A ###

CestaB <- numeric(length(Gasto_PA))

for (i in 1:length(Gasto_PA)) {

CestaB[i] <- round(((L_prep-Gasto_PA[i])/PrecioB),digits = 0)

}



### Creamos vector de utilidad total ###

library(dplyr)



## Del primer data frame obtenemos cantidad y utilidad de B ###

> P2 <- data.frame(P1$Cantidad, P1$UtilidadB)



## Del primer data frame obtenemos cantidad y utilidad de A ###

p3 <- select(P1,Cantidad,UtilidadA)



## Cambiamos nombre de columnas y tipo para unir data_frame ##

CestaB <- data.frame(CestaB)

colnames(CestaB)[1] <- "P1.Cantidad"



## Unimos Unidades de B con su utilidad manteniendo el orden ##

P4 <- merge.data.frame(x=CestaB, y=P2, all.x = TRUE, sort = F)



## Unimos data frame de cantidad y utilidad de A con cantidad y utilidad de B ##

P5 <- cbind(p3,P4)



## Renombramos columnas ##

colnames(P5)[1] <- "CantidadA"

colnames(P5)[3] <- "CantidadB"

colnames(P5)[4] <- "UtilidadB"



## Creamos columna de utilidad total ##

## Este data frame muestra las combinaciones de A y B que se pueden adquirir con el l�mite presupuestario y la utilidad##

P5$Utilidad_Total <- P5$UtilidadA+P5$UtilidadB

CantidadA
UtilidadA
CantidadB
UtilidadB
Utilidad_Total
0
0
5
47
47
1
15
4
42
57
2
28
4
42
70
3
35
3
37
72
4
40
2
30
70
5
45
1
17
62
6
49
1
17
66
7
53
0
0
53
8
55
0
0
55
9
56
-1
NA
NA
10
56
-1
NA
NA



## Identificamos utilidad total m�xima ##

utilidad_max <- which.max(P5$Utilidad_Total)



## Creamos data frame con combinaci�n de A y B que entrega utilidad m�xima ##

fila_max <- P5[utilidad_max, ]

print(fila_max)

class(fila_max)

## Este data frame ser�a la salida en ShinyApp ##


Gracias y saludos

Cleiver Yam

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es