我使用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中使用任何功能来完成此任务吗?提前谢谢!
答案 0 :(得分:1)
输入数据
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))
答案 1 :(得分:1)
您绝对可以创建自己的函数来生成您正在寻找的确切输出,但是您可以使用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]"