[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