根据旧矢量创建新矢量

时间:2018-09-27 12:11:26

标签: r vector

我没有太多的编码经验,尤其是在执行循环时,并且在用类似的问题搜索网络之后,我终于决定打开一个新的页面。我希望SO可以帮助我。

假设我有一个向量 b

3
6
11

现在,我想创建一个新的矢量 c ,如下所示:

1
1
1
2
2
2
3
3
3
3
3
4
4
4

规则是根据向量b进行的:3列之后,我编号为1,6列之后,我编号为2,11列之后,我编号为3,依此类推...

重要:新矢量c的长度应与我的数据框 df

相同

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

vec<-c(3,6,11)
> rep(1:length(vec),times=vec)
 [1] 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3

更新

 fun=function( vec,len=14){
   rep(1:(length(vec)+1),times= c(diff(c(0,vec)),len-sum(diff(c(0,vec)))))
 }

> fun(c(3,6,11),14)
 [1] 1 1 1 2 2 2 3 3 3 3 3 4 4 4

答案 1 :(得分:1)

b <- c(3,6,11)

假设您的数据帧的长度为14:df <- data.frame(a= rep(NA, 14))

df$c <- rep(1:(length(b)+1), times = c(3,diff(b), dim(df)[1] - sum(c(3, diff(b)))))

df
    a c
1  NA 1
2  NA 1
3  NA 1
4  NA 2
5  NA 2
6  NA 2
7  NA 3
8  NA 3
9  NA 3
10 NA 3
11 NA 3
12 NA 4
13 NA 4
14 NA 4