使用条件向量在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)

我需要以下格式的数据框架:

a      b
18     19
19     19
19     19
19     19
21     25
21     25
22     25
23     25
24     25
25     25
26     31
27     31
28     31 
30     31
31     31
35     37
36     37
37     37

此处值19中的vector b中重复到vector a中的值19。在那之后的21(a中(大于19,因此重复下一个25(b(的值,直到25(a(以类似的方式构建数据框。

谢谢。

我们可以从findInterval获得位置索引,使用它为rep

创建times
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

替代,

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

最新更新