在导出到xtable之前按特定变量对表进行排序

时间:2012-06-17 15:23:21

标签: r latex

从调查回复的大型数据集中,我必须构建按递减的特定变量值排序的表。例如,这是我创建的一个表:

t8  <- xtabs(meanq8 ~ respondent, data = bfk1)
t13 <- xtabs(meanq13 ~ respondent, data=bfk1)
t18 <- xtabs(meanq18 ~ respondent, data=bfk1)
t23 <- xtabs(meanq23 ~ respondent, data=bfk1)
t28 <- xtabs(meanq28 ~ respondent, data=bfk1)
t33 <- xtabs(meanq33 ~ respondent, data=bfk1)

tab.L6 <- rbind(t8, t13, t18, t23, t28, t33) 
rownames(tab.L6) <- c("I give teachers a sense of overall purpose", "I help clarify the specific meaning of the school's mission in terms of its practical implications for programs and instruction", "I communicate the school mission to staff and students", "I encourage the development of school norms supporting openness to change", "I help teachers understand the relationship between our school's mission and District initiatives", "I work toward whole-staff consensus in establishing priorities for school goals")

这将生成一个6x4双矩阵,其列名为You,Your.Staff,All.Principals,All.Staff。现在,在我运行xtable之前,我需要通过降低Your.Staff的值对tab.L6进行排序。

我尝试使用plyr和data.table以及基本排序和顺序函数。如果我执行以下

tL6 <- as.data.frame(tab.L6)
table.L6 <- arrange(tL6, desc(Your.Staff))

我最终得到了所需的排序但缺少rownames。

  You Your.Staff All.Principals All.Staff
1   5        5.0            3.8       3.8
2   5        4.5            4.0       3.9
3   5        4.5            3.8       3.6
4   5        4.0            3.5       3.7
5   5        4.0            3.6       3.9
6   4        4.0            3.4       3.7

有没有办法排序和保留rownames?

1 个答案:

答案 0 :(得分:0)

索引你的rownames并在排序后添加它们怎么样?

tab.L6 = as.data.frame(matrix(runif(24,1,100),6))
rownames(tab.L6) <- c("I give teachers...", "I help clarify...", "I communicate..", "I encourage...", "I help teachers...", "I work toward...")
names(tab.L6) = c('You','Your.Staff','All.Principals','All.Staff')
tab.L6$index = 1:6
tab.L6

vecnames = c("I give teachers...", "I help clarify...", "I communicate..", "I encourage...", "I help teachers...", "I work toward...")

(t2 = arrange(tab.L6, desc(Your.Staff)))
rownames(t2) = vecnames[t2$index]
t2

输出:

                         You Your.Staff All.Principals All.Staff index
I help teachers... 33.620593  94.174583       12.93681  60.34864     5
I work toward...   98.250119  84.166085       79.57018  89.76993     6
I help clarify...  85.478336  52.664455       71.82487  18.08677     2
I encourage...     55.972257  50.095689       55.96154  60.04199     4
I give teachers... 20.183314  28.812243       21.71087  29.02465     1
I communicate..     8.520616   3.409428       75.94298  56.98706     3

然后您可以在导出表之前删除索引列:

t2$index = NULL