Skip to content
Back to formatted view

Raw Message

Message-ID: <SJ2PR20MB7155B2A6544A281EDBA4018B87452@SJ2PR20MB7155.namprd20.prod.outlook.com>
Date: 2024-02-07T01:27:39Z
From: Clei Y
Subject: [R-es] Depuración de código

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