R语言:表格的条形图转化

Python029

R语言:表格的条形图转化,第1张

接着上一篇文章 R语言:表格的线图转化 继续练习,这次是直方图。

前段时间在视频课程学习过直方图案例,有一个citysales表格,表示3种产品,在5个城市的销量。

运用的是“barplot”命令,程序如下:

citysales<-read.csv("citysales.csv")

x<-barplot(as.matrix(citysales[,2:4]),beside=TRUE,

legend.text=citysales$City,args.legend=list(bty="n",horiz=TRUE),

col=brewer.pal(5,"Set1"),border="black",ylim=c(0,100))

自己用来练习的表格,还是上次那个。

因为这次想用案例中的色库,所以安装了“RColorBrewer”包。

然后按照案例中语句,写了一下。颜色参数有一点改动。

barplot(as.matrix(mydata[,2:3]),las=2,beside=TRUE,col=brewer.pal(2,"Set2"))

噫,为什么2006一列,2016一列?看回案例,barplot命令是根据列分组的,所以这里也根据了两个年份分组。

这样的图形不是我想要的,所以用 t命令 把mydata的行列互相置换了一下。

b<-as.matrix(mydata[,2:3]) c<-t(b)

barplot(c,las=2,beside=TRUE,col=brewer.pal(2,"Set2"))

这次出现的图形就对了,但是x轴的图标不对。区域名消失了。

很奇怪的是,如果整个mydata置换,就会把整个matrix都变成字符,barplot就不能只打印其中的两列,必须置换成数值

图形跟上图一样,就是没有x轴的数字了。

如果索性在excel表里手动置换行和列,也是可以的。

barplot(as.matrix(mydata2[,2:16]),las=2,beside=TRUE,col=brewer.pal(2,"Set2"),ylim=c(0,95000))

如果去掉“beside=TRUE”语句,则形成层叠图。再加上增长幅度曲线rate。但是因为增长幅度数值相对于几万的房价比较小,所以乘以5000倍才能看得见。

lines(mydata$rate*5000,col="gold")

这里又出现了一个缺点,涨幅曲线和柱状图差了一个,当然在excel表是完全对应的。还没有找出原因。望各位大神指教。

这次的练习:

1.条形图的转化

2.两种图形的叠加

3.RColorBrew包及相关命令

不明白/没做出来的地方

1.用barplot打印matrix的格式

2.matrix怎么加表头

3.Line和条形图的对应

是指sql之类的数据库吗,可以用RODBC包与数据库连接,将数据库中的表读入R中,接下来就可以按照常规的代码解决问题了,也可以安装sqldf包,这样就可以在R中用sql语句对数据操作。

install.packages("RODBC")

library(RODBC)

最新版的r语言没有方差分析表格的解决方法如下:

ANOVA对各疗法的F检验表明,4种药品用于缓解术后疼痛的疗效不同,但是并不能得出哪种药品疗法与其他不同。

多重比较可以解决这个问题.e.g. TukeyHSD()函数提供了对各组均值差异的成对检验;multcomp包中的glht()函数提供了多重均值比较更为全面的方法,既适用于线性模型,也适用于广义线性模型;多重t检验方法针对每组数据进行t检验。代码如下: TukeyHSD(medicine.aov) #par()函数旋转轴标签,增大左边界面积,使标签摆放更美观。 par(las = 2) par(mar = c(5, 8, 4, 2)) plot(TukeyHSD(medicine.aov))

图形中置信区间包含0的药品对比,说明差异不显著。 library(multcomp) #为适合字母阵列摆放,par语句用来增大顶部边界面积 par(mar = c(5, 4, 6, 2)) tuk <- glht(medicine.aov, linfct = mcp(Treatment = "Tukey")) #cld()函数中level选项为设置的显著性水平(这里的0.05对应95%置信区间) plot(cld(tuk, level = 0.05), col = "lightgrey")

有相同字母的组(用箱线图表示)说明均值差异不显著。

多次重复使用t检验会增大犯第一类错误的概率,为了克服这一缺点,需要调整p-值。R软件调整p-值用的是p.adjust()函数,函数使用的不同参数代表不同的调整方法。 attach(medicine) #求数据在各水平下的均值 mu<-c(mean(Response[Treatment==1]), mean(Response[Treatment==2]), mean(Response[Treatment==3]),mean(Response[Treatment==4]))mu #作多重t检验。这里用到的pairwise.t.test()函数用来得到多重比较的p值 pairwise.t.test(Response, Treatment, p.adjust.method = "none")

#观察两个作调整后的p值的情况。p.adjust.method()函数的参数也可换为"hochberg","hommel","bonferroni","BH","BY","fdr"等。 pairwise.t.test(Response, Treatment, p.adjust.method = "holm") #绘制箱线图 plot(medicine$Response~medicine$Treatment)