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
## 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
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]]