我创建了一个数据框:
df <- mydata %>%
mutate(length.class=cut(mydata$count,breaks = c(1, 10, 100, 1000, 10000),include.lowest=TRUE)) %>%
group_by(length.class) %>%
summarise(count = n())
Run Code Online (Sandbox Code Playgroud)
这样得到的df$length.class值就像"(100,1e + 03)",而我更喜欢"(100,1000)".但是,手动更改它不起作用:
df$length.class[df$length.class == "(100,1e+03]"] <- "(100,1000]"
Warnmeldung:
In `[<-.factor`(`*tmp*`, df$length.class == "(100,1e+03]", value = c(1L, :
invalid factor level, NA generated
Run Code Online (Sandbox Code Playgroud)
为什么更改字符串是不可能的,什么尝试R告诉我这条消息?
奖金问题:如何获取原始值或解决更改的行(4)?执行更改命令后,现在有一个"NA"而不是"(100,1e + 03]".
该dig.lab在争论cut应照顾这.
从文档:
未给出标签时使用的整数.它确定格式化中断号码时使用的位数.
在您的情况下,您希望显示5位数,以便您的代码
mydata %>%
mutate(length.class = cut(count, breaks = c(1, 10, 100, 1000, 10000),
include.lowest = TRUE, dig.lab = 5))
Run Code Online (Sandbox Code Playgroud)
结果因素的级别如下:
[1] "[1,10]" "(10,100]" "(100,1000]" "(1000,10000]"
Run Code Online (Sandbox Code Playgroud)