我没有太多的编码经验,尤其是在执行循环时,并且在用类似的问题搜索网络之后,我终于决定打开一个新的页面。我希望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
相同有什么想法吗?
答案 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