用R中的条件向量构建数据帧

用R中的条件向量构建数据帧,r,R,我有两个向量 a <- c(18,19,19,19,21,21,22,23,24,25,26,27,28,30,31,35,36,37) b <- c(19,25,31,37) 此处,向量b中的值19重复至向量a中的值19。 之后,21(a中)大于19,因此下一个值25(b中)将重复,直到25(a中) 以类似的方式构造数据帧 谢谢。我们可以从findInterval获取职位索引,使用该索引为代表创建时间 i1 <- findInterval(b, a) data.frame(

我有两个向量

a <- c(18,19,19,19,21,21,22,23,24,25,26,27,28,30,31,35,36,37)
b <- c(19,25,31,37)
此处,向量
b
中的值19重复至向量
a
中的值19。 之后,21(a中)大于19,因此下一个值25(b中)将重复,直到25(a中) 以类似的方式构造数据帧


谢谢。

我们可以从
findInterval
获取职位索引,使用该索引为
代表创建
时间

i1 <- findInterval(b, a)
data.frame(a, b = rep(b, c(i1[1], diff(i1))))
#    a  b
#1  18 19
#2  19 19
#3  19 19
#4  19 19
#5  21 25
#6  21 25
#7  22 25
#8  23 25
#9  24 25
#10 25 25
#11 26 31
#12 27 31
#13 28 31
#14 30 31
#15 31 31
#16 35 37
#17 36 37
#18 37 37
i1或者

data.frame(a, b = sapply(a, function(x) b[x <= b][1]))
#     a  b
# 1  18 19
# 2  19 19
# 3  19 19
# 4  19 19
# 5  21 25
# 6  21 25
# 7  22 25
# 8  23 25
# 9  24 25
# 10 25 25
# 11 26 31
# 12 27 31
# 13 28 31
# 14 30 31
# 15 31 31
# 16 35 37
# 17 36 37
# 18 37 37

data.frame(a,b=sapply(a,函数(x)b[x@akrun.Thankyou@Julius你能解释一下
[1]
这个术语吗。@用户7462639,为了得到
b
列,我检查
a
并寻找所有大于等于
a
的特定元素的
b
:[x@Julius谢谢你的解释。
data.frame(a, b = sapply(a, function(x) b[x <= b][1]))
#     a  b
# 1  18 19
# 2  19 19
# 3  19 19
# 4  19 19
# 5  21 25
# 6  21 25
# 7  22 25
# 8  23 25
# 9  24 25
# 10 25 25
# 11 26 31
# 12 27 31
# 13 28 31
# 14 30 31
# 15 31 31
# 16 35 37
# 17 36 37
# 18 37 37