当 x 位于上区间边界值时 findInterval()
我需要从 cut()
输出中获取间隔边界。我发现这个问题建议使用findInterval ()
但如果 x
的值与 cut(x)
的上边框相同,则它不会按预期工作。请参阅此处:
x <- 1:3
breaks <- c(min(x), 2, max(x))
interval <- findInterval(x, breaks)
data.frame(x,
groups= cut(x, breaks, include.lowest= TRUE),
x_lower= breaks[interval],
x_upper= breaks[interval + 1],
interval)
x groups x_lower x_upper interval
1 1 [1,2] 1 2 1
2 2 [1,2] 2 3 2
3 3 [2,3] 3 NA 3
我很高兴 cut()
如何从 x
生成 groups
,但 x_lower
和 x_upper<第 2 行和第 3 行中的 /code> 与预期不符。第二行中
和 x
为 2,groups
为 [1,2]
,因此我预计 x_lower
为 < code>1x_upper
为 2
。在第 3 行中,x
是 3,groups
是 [2,3]
,所以我预计 x_lower
是2
和 x_upper
为 3
。如果您处理数据,您会发现如果 x
值与上限相同,findinterval()
返回 groups
的下限值和上限值组
中的边框值。我想避免这种情况。我们怎样才能做到这一点?
预期输出
structure(list(x = 1:3, groups = structure(c(1L, 1L, 2L), .Label = c([1,2]", "(2,3]"), class = "factor"), x_lower = c(1, 1, 2), x_upper = c(2, 2, 3), interval = c(1, 1, 2)), class = "data.frame", row.names = c(NA, -3L))
备注
我确实想使用 findInterval()
并且不能按照 labels[as.numeric(groups)] //stackoverflow.com/questions/32356108/output-a-numeric-value-from-cut-in-r">上述问题。这是因为在我的情况下, x 有时是数字,有时是 Date/ POSIXct/ts/... 向量,因此,使用 as.numeric() 不会保存为我。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论