пропорции диапазона чисел => 1 - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь определить пропорцию диапазона чисел для подмножеств на длинном кадре данных.(Цель состоит в том, чтобы написать функцию.)

below.green<-mean(results$Value <0.04)
green.amber<-mean(results$Value >0.04:0.4)
amber.red<-mean(results$Value >0.4:4)
red.plus<- mean(results$Value >4)

meanresults <- c(below.green,green.amber,amber.red,red.plus)

eg1

Values <- c(0.1501,0.1276,0.0838,0,0,0.4544,0.2573,0.1788,1.291,1.4737,1.8191,
0.5986,4.5846,4.9056,2.4809,2.1021,3.3741,0.0085,0.0302,0.0033,0.0405,0,0,0,0,0,
0.3262,0.0462,0.2536,0.3661,0.4311,0.4719,0.8482,2.3731,0.656,0.3967,0.0399,
0.0302,0.2723,0.3833,0.5907,0.3725,0.0258,0.0483)

sum(meanresults)
#[1] 1.247892

eg2

Values2 <- c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0726,0.0077,0.0444)

sum(meanresults)
#[1] 1

Когда мои пропорции возвращаются в некоторых подмножествах, пропорции равны> 1 (см., Например, 1).На других сайтах доля всего = 1 (например, 2), кажется, это происходит только на сайтах, где значение <0,4.Куда я иду не так? </p>

Я посмотрел несколько QA на сайте и не нашел подобных примеров.

1 Ответ

0 голосов
/ 21 мая 2018

Проблема в последовательностях.

Попробуйте создать свой код с помощью функции R between (пакет data.table).

Некоторые примеры:

> 0.04:0.4
[1] 0.04
> 0.3 < 0.04:0.4
[1] FALSE
> between(0.3, 0.04, 0.4)
[1] TRUE

> 0.4:4
[1] 0.4 1.4 2.4 3.4
> c(0.3, 0.5) > 0.4:4 #Only use the first value
[1] FALSE FALSE FALSE FALSE
> between(c(0.3, 0.5), 0.4, 4)
[1] FALSE  TRUE

Посмотрите на помощь (? Между) и параметр incbounds для установки интервалов.

> between(c(0.3, 0.5), 0.3, 4)
[1] TRUE TRUE
> between(c(0.3, 0.5), 0.3, 4, incbounds = FALSE)
[1] FALSE  TRUE

С уважением !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...