【问题标题】:Draw histograms per row over multiple columns in R在 R 中的多列上绘制每行直方图
【发布时间】:2014-04-11 11:10:02
【问题描述】:

我正在使用 R 来分析我的硕士论文 我有以下数据框:STOF:学生与员工的比例

    HEI.ID   X2007 X2008 X2009 X2010 X2011 X2012 
1        OP  41.8 147.6  90.3  82.9 106.8  63.0    
2        MO  20.0  20.8  21.1  20.9  12.6  20.6    
3        SD  21.2  32.3  25.7  23.9  25.0  40.1    
4        UN  51.8  39.8  19.9  20.9  21.6  22.5    
5        WS  18.0  19.9  15.3  13.6  15.7  15.2    
6        BF  11.5  36.9  20.0  23.2  18.2  23.8    
7        ME  34.2  30.3  28.4  30.1  31.5  25.6    
8        IM   7.7  18.1  20.5  14.6  17.2  17.1    
9        OM  11.4  11.2  12.2  11.1  13.4  19.2    
10       DC  14.3  28.7  20.1  17.0  22.3  16.2    
11       OC  28.6  44.0  24.9  27.9  34.0  30.7    

然后我使用这个推荐对大学进行排名

HEIrank1<-(STOF[,-c(1)])
rank1 <- apply(HEIrank1,2,rank)

> HEIrank11
     HEI.ID X2007 X2008 X2009 X2010 X2011 X2012
1        OP  18.0    20  20.0  20.0  20.0    20
2        MO  14.0     9  13.0  13.5   2.0    12
3        SD  15.0    16  17.0  16.0  16.0    19
4        UN  20.0    18   8.0  13.5  14.0    13
5        WS  12.0     8   4.0   7.0   6.0     8
6        BF   6.5    17   9.5  15.0  10.0    14
7        ME  17.0    15  19.0  19.0  17.0    15
8        IM   2.0     6  12.0   8.0   8.5    10
9        OM   4.5     3   2.5   3.0   3.0    11
10       DC  11.0    14  11.0   9.0  15.0     9
11       OC  16.0    19  16.0  18.0  19.0    17

我想为每个 HEI(每一行)绘制直方图?

【问题讨论】:

  • 我尝试推荐 OP
  • 每行只有 6 个值。你确定从 6 个值中绘制直方图是有意义的吗?也许您的意思是您想要每个数字列的直方图?
  • 我想例如(OP)大学获得排名数(20)5次。所以X应该是排名,Y应该是频率。我需要帮助..

标签: r drawing histogram ranking


【解决方案1】:

如果您使用 ggplot,则无需将其作为循环进行,您可以一次将它们全部绘制出来。此外,您需要重新格式化您的数据,使其为长格式而不是短格式。您可以使用 reshape 包中的 melt 函数来执行此操作。

library(reshape2)
new.df<-melt(HEIrank11,id.vars="HEI.ID")
names(new.df)=c("HEI.ID","Year","Rank")

substring 每年都在去掉 X

library(ggplot2)
ggplot(new.df, aes(x=HEI.ID,y=Rank,fill=substring(Year,2)))+
   geom_histogram(stat="identity",position="dodge")

【讨论】:

  • 嗨 crmhaske....我尝试运行最后一个推荐但显示错误..我不知道为什么而且我在 R 中不好。错误是...(重命名错误( x, .base_to_ggplot, warn_missing = FALSE) : 找不到函数“revalue”) 所以你能帮忙看看我犯了什么错误吗?谢谢
  • 函数 revalue 在 plyr 包中。这可能是您没有的依赖项。执行install.packages("plyr"),然后执行library(plyr)。它应该在那之后工作。
  • 嗨 crmhaske 我尝试使用 par( mfrow = c( 2, 2 ) ) hist(as.numeric(HEIrank11[1,-1]) 绘制每个大学的直方图,因为我的顾问需要它, nclass=12) 我希望大学名称出现在图表中。你能帮帮我吗
  • 您的直方图代码没有意义。你不能有一个负索引。我不确定您要绘制的确切内容以及它与我和 Matthew 使用 ggplot2 和 lattice 向您展示的内容有何不同?
【解决方案2】:

这是lattice中的解决方案:

require(lattice)
barchart(X2007+X2008+X2009+X2010+X2011+X2012 ~ HEI.ID,
         data=HEIrank11,
         auto.key=list(space='right')
         )

【讨论】:

  • 嗨马修....我尝试运行推荐但显示错误..我不知道为什么而且我不擅长 R.错误是...(错误:找不到功能“条形图”)。你能帮帮我吗?
猜你喜欢
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-19
  • 2015-07-12
相关资源
最近更新 更多