根据条件在R中重新调整xtab

时间:2016-05-23 11:28:07

标签: r

对于示例数据框:

df <- structure(list(region = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 
                                          2L, 2L, 2L, 2L), .Label = c("a", "b", "c", "d"), class = "factor"), 
                     result = c(1L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 0L), weight = c(0.126, 
                                                                                        0.5, 0.8, 1.5, 5.3, 2.2, 3.2, 1.1, 0.1, 1.3, 2.5)), .Names = c("region", 
                                                                                                                                                       "result", "weight"), row.names = c(NA, 11L), class = "data.frame")

我使用以下方法绘制交叉表格

df$region <- factor(df$region)
result <- xtabs(weight ~ region + result, data=df)
result

但是,我想确保xtab的区域在样本中的百分比为1。 (即1s代表区域a的29%和区域b的33%)。因此,我希望重新排序xtab,因此区域b首先是a。

我知道我可以使用relevel,但是这取决于我在结果中查看并在适当的时候重新调整。

相反,我希望这在代码中是自动的,而不依赖于用户(因为此代码将运行很多次,并在生成的xtab上完成进一步的分析)。

如果有人有任何想法,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

您可以使用order对第二列的值重新排序xtab,如下所示:

result[order(result[, 2], decreasing=T),]

order对值进行排名,从上到下添加减少= T排名。