如何在boxplot可读的内容中转换数据帧?

时间:2014-09-02 14:25:27

标签: r ggplot2 boxplot

        TEXT1   TEXT2   TEXT3   TEXT4
sample1   38     53      337     3995
sample2   54     81      532     4801
sample3   74     108     750     4921
sample4   103    155     1113    4923

此表显示了四个不同的文本,以及每个文本的一组样本(处理时间,以秒为单位)。我有一些带有这种信息的大型数据表(每个文本有数百个样本)。我把这个表加载到数据框中,df。

我的目的是在一个带有四个方框的箱形图中表示这个,每个文本一个。我可以很容易地代表一个方框,其中包括:

ggplot(data=df,aes(x="T1",y=TEXT1)) + geom_boxplot()

或者用TEXT1代替其值:

ggplot(data=df,aes(x="T1",y=df[1:4,2])) + geom_boxplot()

但是我无法绘制所有四个方框,我已经尝试了这个(不要非常注意x刻度的值):

ggplot(data=df,aes(x=1:4,y=df[1:4,2:5])) + geom_boxplot()

但是它说参数有不同的行数。

看看更好的例子我认为如果我重新塑造我的数据框,那么我只有两个列,一对TEXTX |每行中的样本,然后我可以将第一列分配给x坐标,将第二列分配给y坐标,它应该产生我正在寻找的结果。

但我没有看到一个简单的方法。有什么帮助吗?

感谢。

1 个答案:

答案 0 :(得分:1)

如果添加示例列并将其用作id变量,则非常简单:

df$sample<-rownames(df)
require(reshape2)
df2 = melt(df, id.vars="sample" )

# 1  sample1    TEXT1    38
# 2  sample2    TEXT1    54
# 3  sample3    TEXT1    74
# 4  sample4    TEXT1   103
# 5  sample1    TEXT2    53
# 6  sample2    TEXT2    81
# 7  sample3    TEXT2   108
# 8  sample4    TEXT2   155
# 9  sample1    TEXT3   337
# 10 sample2    TEXT3   532
# 11 sample3    TEXT3   750
# 12 sample4    TEXT3  1113
# 13 sample1    TEXT4  3995
# 14 sample2    TEXT4  4801
# 15 sample3    TEXT4  4921
# 16 sample4    TEXT4  4923

并用

绘图
ggplot(df2,aes(x=sample,y=value)) + geom_boxplot()