1

我在订购直方图的因子时遇到问题。我的数据是这样的:

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

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

条形图(表(onderlaag),ylim=c(0,250))

这里的直方图条的顺序是按字母顺序排列的,但我想让它们按以下顺序排列:strooisel - geen - gras - kniklaag。

我已经使用了因子函数,但是在我完成此操作后我的条形图不再有条形了

onderlaag2=因子(onderlaag,levels=c("Strooisel","Geen","Gras","Kniklaag"))

我怎样才能做到这一点?

4

2 回答 2

1

我认为您所要求的只是对输入进行排序的一种方式,我们可以很容易地将其作为您的“条形图”功能的一部分,如下所示:

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

“表格”功能会自动为您排序列,但您可以在之后手动指定顺序。它的语法是这样的:

table(your_data)[rows_to_select, columns_to_select]

在哪里your_data将数据制成表格,rows_to_select是要应用于行columns_to_select的过滤器列表,是要应用于列的过滤器列表。通过不指定rows_to_select,我们选择所有行,通过指定columns_to_selectas c(4,1,2,3),我们选择所有四列,但按特定顺序。

于 2013-01-31T12:45:34.460 回答
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 ) )
于 2013-01-31T12:24:18.687 回答