为什么我的 R 代码中出现 'breaks not unique' 错误?

Why do I get a 'breaks not unique' error in my R code?

我是 R 的新手,所以这可能是一个愚蠢的错误。我正在尝试使用 cut 函数,但我不断收到相同的错误。错误是:

Error: Problem with `mutate()` input `Calls_bucket`.
x 'breaks' are not unique
i Input `Calls_bucket` is `cut(...)

这是我的代码(我尝试了很多不同的变体。这是最近的两个):

m3 <- m2 %>%
  mutate(Calls_bucket=cut(Calls_per_Hour,c(2,4,6,8,10,12,14,16,18,20,max(Calls_per_Hour, na.rm=T)),
                         labels=c("0-2","2-4","4-6","6-8","8-10","10-12","12-14","14-16","16-18","18-20",">20")))

m3 <- m2 %>%
  mutate(Calls_bucket=cut(Calls_per_Hour,breaks=c(2,4,6,8,10,12,14,16,18,20,max(Calls_per_Hour, na.rm=T)),labels=c("0-2","2-4","4-6","6-8","8-10","10-12","12-14","14-16","16-18","18-20",">20")))

如果我只选择休息的次数,我可以让它工作,但我想具体定义它们。此代码有效,例如:

m3 <- m2 %>%
  mutate(Calls_bucket=cut(Calls_per_Hour,12))

提前致谢。任何帮助将不胜感激。

对我来说,当我将 0 作为第一个剪辑时,它起作用了。并指定 include.lowest = TRUE。因此每个 0 都包含在第一类中。通过将 include.lowest 设置为 FALSE(默认值),0 将转换为 NA。

m2 <- data.frame(Calls_per_Hour = 0:25)

m3 <- m2 %>%
  mutate(Calls_bucket=cut(Calls_per_Hour,c(0,2,4,6,8,10,12,14,16,18,20, Inf),
                          labels=c("0-2","2-4","4-6","6-8","8-10","10-12","12-14","14-16","16-18","18-20",">20"),
                          include.lowest = TRUE))

一个注解。在您的示例中,标签不明确。如果我读到 0-2 和 2-4,我不知道在哪里包含 2。因此在您的实际代码中,您可以明确设置标签 (0-2、3-4)。

定义间隔时,如果您使用 max(Calls_per_Hour),请使用 unique()。 这对我有用

m3 <- m2 %>%
    mutate(Calls_bucket=cut(Calls_per_Hour,unique(c(0,2,4,6,8,10,12,14,16,18,20,max(Calls_per_Hour,na.rm=TRUE))),
                            labels=c("0-2","2-4","4-6","6-8","8-10","10-12","12-14","14-16","16-18","18-20",">20"),include.lowest = T))
  • unique() 确保切割的唯一向量,即如果 max(Calls_per_Hour) 等于给定向量中的值,则切割保持唯一。
  • 由于您使用 0 作为标签的开头,因此您还应该在剪辑中包含 0。
  • 设置include.lowest=TRUE确保为遇到的最低值分配标签。