从调查回复的大型数据集中,我必须构建按递减的特定变量值排序的表。例如,这是我创建的一个表:
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?
答案 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