R: Изменить вывод вектора на несколько диапазонов - PullRequest
0 голосов
/ 08 июня 2018

Я использую Jenks Natural Breaks через пакет BAMMtools для сегментирования моих данных в RStudio версии 1.0.153.Выходными данными является вектор, который показывает, где в моем наборе данных происходят естественные разрывы, например:

[1] 14999 41689 58415 79454 110184 200746

Я хотел бы взять вышеприведенный вывод и создать диапазоны, выведенные из разрывов.Пример: 14999-41689, 41690-58415, 58416-79454, 79455-110184, 110185-200746

Есть ли какие-либо функции, которые я могу использовать в R Studio для достижения этой цели?Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Вы определенно можете создать свою собственную функцию, которая будет производить именно тот результат, который вы ищете, но вы можете использовать функцию cut, которая даст вам что-то вроде этого:

# example vector
x = c(14999, 41689, 58415, 79454, 110184, 200746)

# use the vector and its values as breaks
ranges = cut(x, x, dig.lab = 6)

# see the levels
levels(ranges)
#[1] "(14999,41689]"   "(41689,58415]"   "(58415,79454]"   "(79454,110184]"  "(110184,200746]"
0 голосов
/ 08 июня 2018

Входные данные

x <- c(14999, 41689, 58415, 79454, 110184, 200746)

Если вы хотите, чтобы диапазоны были символами, вы можете сделать

y <- x; y[1] <- y[1] - 1 # First range given in question doesn't follow the pattern. Adjusting for that

paste(head(y, -1) + 1, tail(y, -1), sep = '-')
#[1] "14999-41689"   "41690-58415"   "58416-79454"   "79455-110184"  "110185-200746"

Если вы хотите список фактических наборов чисел в каждом диапазоне, вы можете сделать

seqs <- Map(seq, head(y, -1) + 1, tail(y, -1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...