我有一个向量,包括几百万个值。现在我希望找到不同的区间(每个区间为3个不同的区间,但可以是4、5或其他不同数量的区间),其中每个区间中的值的数量应该大致相等。
我只是尝试了一种手动的方法,那就是我首先做一个hist图,然后看看如何找到我想要的区间(或者我首先尝试不同的区间,并查看这些假设区间中的数字,如果不满意,那么尝试不同的区间组合)。但是,我认为应该有一种聪明的方法来做同样的事情。我模拟一小部分数据来显示我想要的。
v01 <- runif(2, 0, 1)
v12 <- runif(2, 1, 2)
v25 <- runif(2, 2, 5)
v <- c(v01, v12, v25)
hist(v)
length(v[v >= 0 & v <= 1])
# 2
length(v[v > 1 & v < 2])
# 2
length(v[v >= 2 & v < 5 ])
# 2然后,间隔:(0, 1]、(1, 2]和[2, 5)就是我想要的,因为在这些间隔中,有(大约)相等数量的值(即这里是2)。请帮助给出一个提示,如何以适当的方式找到不同的这样的间隔?
发布于 2019-09-14 22:28:19
您希望在数据的特定分位数处使用分隔符。例如,
v01 <- runif(1000, 0, 1)
v12 <- runif(1000, 1, 2)
v25 <- runif(1000, 2, 5)
v <- c(v01, v12, v25)
n <- 3 # Number of intervals
breaks <- quantile(v, (0:n)/n) # These are the breakpoints. You might
# want to round them to integers, based
# on your example
breaks
# 0% 33.33333% 66.66667% 100%
# 0.0004285758 1.0002311588 1.9999579265 4.9946567267 https://stackoverflow.com/questions/57935862
复制相似问题