使用定性数据绘制条形图

Use qualitative data to draw barplots

我正在寻找使用此类数据集的解决方案,该数据集显示在 ForTyp(森林类型)中采样的 Sp(物种)并且具有毒性(Toxitol、Nitrotol、Poustol):N/A 表示没有信息在数据集中(空白处):

dat<-read.table(text = "Sp     ForTyp     Toxitol     Nitrotol     Poustol
         A     1     y     y     N/A
         B     1     N/A     y     y
         C     1     y     y     N/A
         D     1     y     N/A     N/A
         E     2     y     N/A     N/A
         F     2     N/A     N/A     y
         A     3     y     y     N/A
         B     3     N/A     y     y
         C     3     y     y     N/A",header=T)

我正在寻找一种解决方案来转换之前的数据帧:

dat2<-read.table(text = "ForTyp     Toxitol     Nitrotol     Poustol
     1     42,85     42,85     14,29
     2    50     0     50
     3    33,33     50     16,67", header=T)

此数据框显示了不同 ForTyp(森林类型)的每列(Toxitol、Nitrotol、Poustol)的百分比。 目的是能够生成这种类型的图:

有人知道数据转换和条形图吗?

这里有一个使用 plyr 包的方法。需要做一些工作才能使情节更漂亮,但 objective 已经实现了。

library(plyr)

dat[,3:5] <- ifelse(dat[,3:5] == "y",1,0)

dat2 <- ddply(.data = dat,.(ForTyp), .fun = function(x) {

  Toxitol = sum(x$Toxitol)

  Nitrotol = sum(x$Nitrotol)

  Poustol = sum(x$Poustol)

  props <- prop.table(c(Toxitol,Nitrotol,Poustol))

}

)

barplot(as.matrix( t( dat2[2:4] *100) ),names.arg = unique( dat[,2]),legend.text = colnames( dat[,3:5]))