我有一个具有许多不同值的因素。如果您执行summary(factor)
输出是不同值及其频率的列表。像这样:
A B C D
3 3 1 5
我想制作频率值的直方图,即 X 轴包含发生的不同频率,Y 轴包含具有此特定频率的因素的数量。完成这样的事情的最佳方法是什么?
编辑:感谢下面的答案,我发现我可以做的是从表格中获取频率因子,在表格中获取它,然后绘制它,看起来像(如果f
是因子):
plot(factor(table(f)))
我有一个具有许多不同值的因素。如果您执行summary(factor)
输出是不同值及其频率的列表。像这样:
A B C D
3 3 1 5
我想制作频率值的直方图,即 X 轴包含发生的不同频率,Y 轴包含具有此特定频率的因素的数量。完成这样的事情的最佳方法是什么?
编辑:感谢下面的答案,我发现我可以做的是从表格中获取频率因子,在表格中获取它,然后绘制它,看起来像(如果f
是因子):
plot(factor(table(f)))
根据澄清的 Q 更新
set.seed(1)
dat2 <- data.frame(fac = factor(sample(LETTERS, 100, replace = TRUE)))
hist(table(dat2), xlab = "Frequency of Level Occurrence", main = "")
给出:
这里我们只是hist()
直接应用于 的结果table(dat)
。table(dat)
提供因子的每个级别的频率并hist()
生成这些数据的直方图。
原来的
有几种可能性。您的数据:
dat <- data.frame(fac = rep(LETTERS[1:4], times = c(3,3,1,5)))
以下是三个,从第一列,从上到下:
"table"
,绘制数据和类似直方图的条形图生成它们的代码:
layout(matrix(1:4, ncol = 2))
plot(table(dat), main = "plot method for class \"table\"")
barplot(table(dat), main = "barplot")
tab <- as.numeric(table(dat))
names(tab) <- names(table(dat))
dotchart(tab, main = "dotchart or dotplot")
## or just this
## dotchart(table(dat))
## and ignore the warning
layout(1)
这会产生:
如果您只是将数据保存在变量中factor
(顺便说一下,名称选择不好),那么table(factor)
可以使用而不是table(dat)
或table(dat$fac)
在我的代码示例中使用。
为了完整起见,包lattice
在生成点图时更加灵活,因为我们可以获得您想要的方向:
require(lattice)
with(dat, dotplot(fac, horizontal = FALSE))
给予:
还有一个ggplot2
版本:
require(ggplot2)
p <- ggplot(data.frame(Freq = tab, fac = names(tab)), aes(fac, Freq)) +
geom_point()
p
给予: