我有一个具有许多不同值的因子。如果执行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)))
在澄清问题后更新
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
提供:
fac_levels <- levels(dat$fac); o <- order(table(dat$fac)); dat$fac <- with(dat, factor(fac, levels = fac_levels[o]))
。 - Richie Cottonread.csv
中得出的。所以我想要的是一个显示频率的频率的图表。 - wds