排序xtable的输出

时间:2012-11-05 01:23:08

标签: r xtable

我有一个数据集用于创建表,但现在我希望输出按字母顺序排序。 ordersortsort.list我无法开展工作。这是我所拥有的一个例子。

library(maptools)
data(wrld_simpl)
tab.test <- xtable(subset(wrld_simpl@data, select=c(NAME, REGION)))
head(tab.test)
% latex table generated in R 2.15.1 by xtable 1.7-0 package
% Sun Nov  4 19:58:19 2012
\begin{table}[ht]
\begin{center}
\begin{tabular}{rll}
  \hline
 & NAME & REGION \\ 
  \hline
ATG & Antigua and Barbuda &  19 \\ 
DZA & Algeria &   2 \\ 
AZE & Azerbaijan & 142 \\ 
ALB & Albania & 150 \\ 
ARM & Armenia & 142 \\ 
AGO & Angola &   2 \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

我希望能够按NAMEREGION甚至第一列(ISO3对其进行排序,这似乎是默认的左列。我感谢你的帮助,包括对类似问题的暗示(在寻找治疗方法时我可能忽略了它们)。

1 个答案:

答案 0 :(得分:1)

据我所知,这与xtable无关

鉴于wrld_simplSpatialPolygonsDataFrame,我认为使用试图修改data对象的S4广告位副本会更容易。

plyr包有一个很好的函数arrange,这使得排序变得容易。目前尚不清楚您是否希望按NAME然后REGION排列这些内容,因此我将仅通过NAME提供排序示例

wrld_data <- wrld_simpl@data


library(plyr)

arranged_data <- arrange(wrld_data, NAME)
# this was nice syntax for
# wrld_data[order(wrld_data$NAME),]

# subset colums
subset_data <- subset(arranged_data, select = c(NAME, REGION))

head(subset_data)

           NAME REGION
1 Aaland Islands    150
2    Afghanistan    142
3        Albania    150
4        Algeria      2
5 American Samoa      9
6        Andorra    150

只是为了表明您的问题不是xtable相关

.x <- xtable(subset_data)

head(.x)
% latex table generated in R 2.15.2 by xtable 1.7-0 package
% Mon Nov 05 13:03:27 2012
\begin{table}[ht]
\begin{center}
\begin{tabular}{rlr}
  \hline
 & NAME & REGION \\ 
  \hline
1 & Aaland Islands & 150 \\ 
  2 & Afghanistan & 142 \\ 
  3 & Albania & 150 \\ 
  4 & Algeria &   2 \\ 
  5 & American Samoa &   9 \\ 
  6 & Andorra & 150 \\ 
   \hline
\end{tabular}
\end{center}
\end{table}