为什么我的 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
确保为遇到的最低值分配标签。
我是 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
确保为遇到的最低值分配标签。