我有这样的数据:
groups = c(1,1,2,2,3,3)
var1 = c(2,3,4,4,6,8)
dat = data.frame(groups, var1)
对于groups
中的每个值,我想绘制var1
的直方图。因此,我期望3个直方图包含var1
的2个条目。
我尝试了一个循环:
for (i in unique(dat$groups)) {
hist(dat$var1)
}
但是,它绘制了var1的所有条目,而不只是与每个组一起出现的值。
答案 0 :(得分:1)
如果采用循环方法,则需要手动对数据进行子集
hist(subset(dat, groups == i)$var1)
否则,您可以将ggplot2用于具有更好功能和更好外观的目的。我可以简单地给您代码,但是如果您不熟悉R,我建议您花些时间了解ggplot的基础知识。否则代码看起来就像魔术一样
答案 1 :(得分:1)
一种可能的解决方案是通过split
和groups
函数lapply
将hist
数据传输到每个子数据帧。
subdf_list <- split(dat, dat$groups)
h_list <- lapply(subdf_list, function(DF) {
x11()
hist(DF[['var1']])
})