我有三个向量:
x1 <- c(0.000, 0.792, 1.451, 1.802, 2.551, 2.591, 3.991, 4.321)
x2 <- c(0.8, 2.6)
x3 <- c(3,6,-1)
我想创建另一个与x4
长度相同的向量(x1
)并填充x3
的值,但3
成为{{1}当6
中的值非常接近6
时,s和-1
会变为x2
,但如果它们相同则不一定。然后,x1
看起来像这样:
x4
关键是 x1 x4
0.000 3
0.792 3 #0.8 in x2 is close to 0.792 x1, so this is the last place 3 appears
1.451 6
1.802 6
2.551 6
2.591 6 #2.6 in x2 is close to 2.591 x1, so this is the last place 6 appears
3.991 -1
4.321 -1
中的值需要接近x2
中的值才能启动x1
内的值之间的更改,而不一定完全相同,并添加在x3
。如果x4
中的值不接近x1
,则x2
中的值不会在x4
中的值之间发生变化。
抱歉,我希望这是有道理的,但如果有人知道该怎么做,那就非常感激了!
答案 0 :(得分:3)
您可以使用cut
x4 <- cut(x1, c(-Inf, x2, Inf), labels = x3, right = FALSE)
x4
# [1] 3 3 6 6 6 6 -1 -1
# Levels: 3 6 -1
注意,结果将是因素。
如果您想将它们转换为数字,可以使用:
as.numeric(levels(x4))[x4]
# [1] 3 3 6 6 6 6 -1 -1
关闭时,我认为你的意思是价值在区间内( - Inf到0.8; 0.8到2.6; 2.6到Inf)