根据条目在R中拆分矢量
我输入矢量vec<-c(2 3 4 8 10 12 15 19 20 23 27 28 39 47 52 60 64 75)
,以及我想要拆分矢量条目的间隔的大小。根据条目在R中拆分矢量
在这个例子中,我想根据每个条目的大小将其分成9个不同的向量。 在我的情况我想向量号1是在区间[1,9],则载体2是在[10,18]条目... ECT
换句话说条目:
vec1: 2 3 4 8
vec2: 10 12 15
vec3: 19 20 23 27
等...
我已经使用分割功能试过,但我不知道如何设置的比例,将工作。
使用整数除法%/%
要返回的组中的每个值属于英寸然后split
成单独的向量的向量。使用(vec-1)
是 “包容性”,即27去与3组,组不4.
split(vec,(vec-1) %/% 9)
编辑:
使用dplyr
和cut
其中明确标记每个区间的另一种方式
require(dplyr)
vec <- as.data.frame(vec)
df2 %>% mutate(interval = cut(vec,breaks=seq(0,((max(vec) %/% 9) +1) * 9,9),include.lowest=TRUE,right=TRUE))
vec interval
1 2 [0,9]
2 3 [0,9]
3 4 [0,9]
4 8 [0,9]
5 10 (9,18]
6 12 (9,18]
7 15 (9,18]
8 19 (18,27]
9 20 (18,27]
10 23 (18,27]
11 27 (18,27]
我认为它应该是'split(vec,(vec -1)%/%9)',因为我的情况是我以1开始第一个间隔而不是0 – user7512228
@ user7512228是的,固定。我错过了27日的“包容性”。 – Mako212
也许下面会做你想要的。
f <- cut(vec, seq(0, max(vec), by = 9), include.lowest = TRUE)
sp <- split(vec, f)
sp <- sp[sapply(sp, function(x) length(x) != 0)]
sp
也许这
library(purrr)
vec <- c(2, 3, 4, 8, 10 ,12, 15 ,19, 20, 23, 27, 28, 39, 47, 52, 60, 64, 75)
vec1 <- keep(vec, function(x) x >= 1 & (x) <= 9)
vec2 <- keep(vec, function(x) x >= 10 & (x) <= 18)
* ...根据每个条目的大小* - 什么d这意味着什么?请进一步解释你如何从'vec'得到输出。 –
我建议使用整数除法来找出每个属于'%/%'的运算符是哪一个运算符。 – Mako212
当然,我想输入一个向量和一个区间大小,并且输出将是这些向量的数量,这些向量的入口在这些增加的区间内。在上面的示例中,我选择了[1,9],[10,18],... – user7512228