난 R에 데이터 프레임을 가지고R 해석 최적화 문제
buys ges dif bin
1 22.34 12 10.34 0
2 55.56 12 43.56 0
3 78.33 12 66.33 0
4 9.99 12 2.01 1
.. .. .. .. ..
dif
단지 abs(buys-ges)
bin
과 달리 1 if dif is <=10
0 인 화학식 ifelse
이다. ges
열을 변경하여 bin
열의 합을 최대화하려고합니다. 제약 조건은 ges
이 모든 행에서 동일하다는 것입니다. 몇 가지 패키지를 시도했지만 최대화 또는 최적화를 파악할 수 없습니다. 어떤 제안을 주셔서 감사합니다. bin
의 값은 0 또는 1 중 하나이기 때문에
buys <- rnorm(1:100)
> buys <- data.frame(a*100)
> buys <- round(abs(a), 2)
> summary(buys)
a...100 gs dif bin
Min. : 0.89 Min. :15 Min. : 1.76 Min. :0.00
1st Qu.: 38.29 1st Qu.:15 1st Qu.: 23.29 1st Qu.:0.00
Median : 72.89 Median :15 Median : 57.88 Median :0.00
Mean : 83.91 Mean :15 Mean : 70.52 Mean :0.13
3rd Qu.:123.50 3rd Qu.:15 3rd Qu.:108.50 3rd Qu.:0.00
Max. :269.11 Max. :15 Max. :254.11 Max. :1.00
> gs1 <- 5
> buys$gs <- gs1
> buys$dif <- abs(buys[,1] - buys$gs)
> buys$bin <- ifelse(buys$dif<=10,1,0)
> colnames(buys) <- c("buys","gs","dif","bin")
> head(buys)
buys gs dif bin
1 7.48 5 2.48 1
2 79.08 5 74.08 0
3 139.22 5 134.22 0
4 41.60 5 36.60 0
5 38.35 5 33.35 0
6 157.72 5 152.72 0
> sum(buys$bin)
[1] 10
> num_buys=function(x)
+ {
+ return(length(buys$buys[buys$buys>=x-10 | buys$buys<=x+10]))
+ }
> ans2 <- optimize(f=num_buys,interval=c(min(buys$buys),max(buys$buys)),maximum=TRUE)
>
>
> ans2
$maximum
[1] 269.1099
$objective
[1] 100
나는 의심 스럽다.이 df는 단지 샘플 일 뿐이다. 15.00에 50 개의 구매가있는 경우 최대 (구매) 근처의 항목을 사용하여 bin의 합을 최대화하지 않을 것입니다. – screechOwl
'ges = max (buy)'이면'max (dif) = 0 <= 10'이므로 각 행에 대해'bin == 1'과'sum (bin)'이 최대가됩니다. –
당신이 맞습니다. 내가 잘못 썼습니다. 그것의 abs (구매 - ges) 해야하는. 미안합니다. – screechOwl