我有一个数据集,其中包含年龄列和具有肺活量的相应列。如何创建直方图,显示肺容量相对于年龄的分布?
以下是数据外观的示例。我实际上想要比较那些不抽烟的人和那些做的人的分布:
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
答案 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")
如果要绘制两个变量之间的关系,散点图可能是更好的选择:
ggplot(foo, aes(age, capacity))+geom_point(color="blue")
答案 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()
输出如下: