给定变量或数据列的R直方图密度

时间:2014-10-26 20:31:24

标签: r plot histogram

我有一个数据集,其中包含年龄列和具有肺活量的相应列。如何创建直方图,显示肺容量相对于年龄的分布?

以下是数据外观的示例。我实际上想要比较那些不抽烟的人和那些做的人的分布:

Caes Age Gender Smoke Height FEV

0 16 1 0 64.8 2.65

0 12 0 0 60.5 2.27

1 19 1 0 71.7 4.29

0 15 0 0 64.8 2.52

2 个答案:

答案 0 :(得分:1)

当你有一个载体(如肺活量)并且你想要显示值的分布时,通常会使用直方图:

library(ggplot2)
foo <- data.frame(age=runif(1000,min=10,max=50), capacity=rnorm(1000,mean=10))
ggplot(foo, aes(capacity))+geom_histogram(fill="blue")

enter image description here

如果要绘制两个变量之间的关系,散点图可能是更好的选择:

ggplot(foo, aes(age, capacity))+geom_point(color="blue")

enter image description here

答案 1 :(得分:1)

感谢您的回复。我意识到我想要一个条形图而不是直方图。以下是我提出的解决方案:

smoke=read.csv("SmokingEffect.csv",header=TRUE)
smokes=subset(smoke,select=c(Age,Smoke,FEV))
library(plyr)
smokesmeans <- ddply(smokes, c("Age","Smoke"), summarize, mean=mean(FEV),
sem=sd(FEV)/sqrt(length(FEV)))
smokesmeans <- transform(smokesmeans, lower=mean-sem, upper=mean+sem)
smokesmeans[,2] <- sapply(smokesmeans[,2], as.character)
library(ggplot2)
plotation <- qplot(x=Age, y=mean, fill=Smoke, data=smokesmeans, 
geom="bar",stat="identity",position="dodge",main="distribution of FEV",
ylab="mean FEV")
plotation <- plotation + geom_errorbar(aes(ymax=upper,
ymin=lower), position=position_dodge(0.9), data=smokesmeans)
png(myplot.png)
plotation
dev.off()

输出如下:

enter image description here