直方图因子排序

时间:2013-01-31 11:01:32

标签: r

我在排序直方图的因素时遇到了问题。 我的数据是这样的:

ID  onderlaag
1  strooisel
2  geen
3  strooisel
4  kniklaag
5  gras
6  geen
.
.

我使用barplot()函数制作直方图:

  

barplot(表(onderlaag),ylim = C(0250))

此处直方图条的顺序是按字母顺序排列的,但我希望按照以下顺序排序:strooisel - geen - gras - kniklaag。

我使用了因子功能,但是在我完成此操作后,我的条形图已经没有任何条形

  

onderlaag2 =因子(onderlaag,水平= C( “Strooisel”, “Geen的”, “节”, “Kniklaag”))

我该怎么做?

2 个答案:

答案 0 :(得分:1)

请在下次使用dput

时提供示例数据
# construct an example data frame similar in structure to the question
x <- data.frame( ID = 1:4 , ord = c( 'b' , 'a' , 'b' , 'c' ) )

# look at the table of x, notice it's alphabetical
table( x )

# re-order the `ord` factor levels
levels( x$ord ) <- c( 'b' , 'a' , 'c' )

# look at x
x

# look at the table of x, notice `b` now comes first
table( x )

# print the results, even though it's not a histogram  ;)
barplot( table(x) , ylim = c( 0 , 5 ) )

答案 1 :(得分:1)

我认为你所要求的只是一种排序输入的方式,我们可以很容易地将其作为'barplot'函数的一部分,如下所示:

barplot(table(onderlaag)[,c(4,1,2,3)], ylim=c(0,250))

'table'功能会自动为您的列排序,但您可以在之后手动指定订单。它的语法如下:

table(your_data)[rows_to_select, columns_to_select]

your_data是表格中的数据,rows_to_select是要应用于行的过滤器列表,columns_to_select是要应用于行的过滤器列表列。如果不指定rows_to_select,我们会选择所有行,并将columns_to_select指定为c(4,1,2,3),我们会按特定顺序选择所有四列。