对于示例数据框:
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上完成进一步的分析)。
如果有人有任何想法,我将不胜感激。
答案 0 :(得分:3)
您可以使用order
对第二列的值重新排序xtab,如下所示:
result[order(result[, 2], decreasing=T),]
order
对值进行排名,从上到下添加减少= T排名。