提问人:Nate 提问时间:10/28/2021 最后编辑:zx8754Nate 更新时间:10/28/2021 访问量:918
R 中的直方图,仅包含 1 个 bin 用于零
Histogram in R with 1 bin for zeros only
问:
是否可以在 R 中制作具有不同大小的 bin 的直方图?我正在处理计数数据,零需要有自己的箱子,但其他数字可以装箱到任何有意义的数字中。所有鱼计数的单个直方图就可以了。
fish<-structure(list(num = c(0, 11, 1, 0,
13, 11, 0, 1, 0, 0, 11, 11, 0, 10, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 9, 0, 2, 1, 0,
7, 6, 0, 4, 8, 0, 8, 6, 0)),
class = "data.frame", row.names = c(NA,-50L))
答:
3赞
zx8754
10/28/2021
#1
使用 cut 本身具有 0,然后使用 seq 创建 bin:
barplot(table(cut(fish$num, c(0, seq(1, 15, 3)), right = FALSE)), space = 0)
编辑:第一个条形仅包含零,请参阅:
table(fish$num)
# 0 1 2 4 6 7 8 9 10 11 13
#31 4 1 1 2 1 2 1 1 4 2
table(cut(fish$num, c(0, seq(1, 15, 3)), right = FALSE))
# [0,1) [1,4) [4,7) [7,10) [10,13)
# 31 5 3 4 5
评论
0赞
Nate
10/28/2021
第一个箱子里有 1 吗?我认为这效果更好:barplot(table(cut(fish$num, c(-1, seq(0, 15, 3)))), space = 0)
0赞
zx8754
10/28/2021
@Nate看到编辑,第一个柱线只包含 0。
0赞
Nate
10/28/2021
完美,谢谢!
0赞
user2554330
10/28/2021
#2
您可以使用函数的参数将中断指定为所需的任何中断。您应该将其与参数结合起来,否则您将得到一个密度图,并且零点的密度将是无限的。不过,该图看起来不是很好,因为零箱没有宽度:breaks
hist()
freq = TRUE
hist(fish$num, breaks = c(0, 0, 5, 10, 15, 20), freq=TRUE)
我不确定你想做什么。
评论
0赞
zx8754
10/28/2021
也许将中断更改为 0 值的获取柱。c(0, 1, 5, 10, 15, 20)
2赞
user2554330
10/28/2021
@zx8754,我认为你放弃直方图并使用条形图的想法更好。不过,我可能会尝试手动设置标签,例如.c("0", "1-5", "6-10", "11-15")
评论
barplot(table(fish$num))
barplot(table(cut(fish$num, c(-1, seq(0, 15, 3)))), space = 0)