R:剪切是正确的功能吗?

R:剪切是正确的功能吗?,r,cut,R,Cut,我目前正在努力与削减…我不知道是否有另一个功能为这个 我有一个带值的大表和一个带阈值的矩阵或向量 假设我有一个包含阈值0.6,0.8,1.0,1.2,1.4的矩阵 我想找出一个值(即0.9),该值在哪个扇区下降。基本上这是一个“分级”系统。值cut应该是正确的函数,但您做错了 首先,你的代码中有拼写错误标签=c(…)将是正确的版本 第二,想想你在做什么:创造时间间隔。有多少尝试在不使用标签的情况下进行剪切,以查看: cut(1.2, breaks=c(0.6,0.8,1.0,1.2,1.4))

我目前正在努力与削减…我不知道是否有另一个功能为这个

我有一个带值的大表和一个带阈值的矩阵或向量

假设我有一个包含阈值0.6,0.8,1.0,1.2,1.4的矩阵
我想找出一个值(即0.9),该值在哪个扇区下降。基本上这是一个“分级”系统。值
cut
应该是正确的函数,但您做错了

首先,你的代码中有拼写错误<代码>标签=c(…)将是正确的版本

第二,想想你在做什么:创造时间间隔。有多少尝试在不使用
标签的情况下进行
剪切
,以查看:

cut(1.2, breaks=c(0.6,0.8,1.0,1.2,1.4))
# [1] (1,1.2]
# Levels: (0.6,0.8] (0.8,1] (1,1.2] (1.2,1.4]

只有4个级别是按照您的方式创建的,因此您只需要提供4个标签(或重新定义断点)。

我想您正在寻找
findInterval

breaks <- c(0.6,0.8,1.0,1.2,1.4)
val <- c(0.7,1.1,1.35)
findInterval(val, breaks)
## [1] 1 3 4

中断
findInterval
非常适合这种情况

x <- c(0.6, 0.8, 1.0, 1.2, 1.4)
> findInterval(0.9, x)
[1] 2
x findInterval(0.9,x)
[1] 2

这意味着您的值
0.9
处于第二个区间,即
0.8
1.0
之间。查看
?findInterval
了解更多详细信息。

Thx非常抱歉,R仍然是新手,学习曲线确实非常高

问题是,任何值1.4都应该是最差的。findInterval总是>=所以我没有成功。但在你的帮助下我做到了:

cut(1.2, breaks=c(0,0.6,0.8,1.0,1.2,1.4,100),labels=c(6,5,4,3,2,1))

您编写它的方式没有
的类别,但是
findInterval
使用在右侧打开的间隔,而不是像OP想要的那样关闭。所以你必须在负空间中工作:
grade你是对的@flodel,我还没有意识到这一点,谢谢你指出;)
x <- c(0.6, 0.8, 1.0, 1.2, 1.4)
> findInterval(0.9, x)
[1] 2
cut(1.2, breaks=c(0,0.6,0.8,1.0,1.2,1.4,100),labels=c(6,5,4,3,2,1))