2013-07-10 16 views
7

Tabloları iki veri çerçevesinden birleştirmek istiyorum ve bu tabloyu latekse göndermek istiyorum. Oluşturmak istediğim tablo aşağıdaki gibi görünüyor. Not, aşağıdaki tablo excel kullanılarak oluşturulur. xtable itibarenXtable veya herhangi bir paket kullanarak iki sütun üzerinde genişleyen başlıklı bir tablo oluşturun.

enter image description here

Ar İki ayrı istasyonlar için tablo ihracat başardı. İki istasyon T1 ve T2 için aşağıdakileri edinin. İstenen çıktıyı yukarıdaki gibi elde etmek için iki istasyonun çıkışını nasıl birleştirebilirim?

İstasyon T1:

> stT1 
     Observed-modeled |observed-modeled| 
Min.   -1.5360000   0.0001891 
1st Qu.  0.0002512   0.1633000 
Median   0.3593000   0.5390000 
Mean   0.8554000   1.0020000 
3rd Qu.  1.6470000   1.6470000 
Max.   5.5370000   5.5370000 

> dput(stT1) 
structure(list(`Observed-modeled` = c(-1.536, 0.0002512, 0.3593, 
0.8554, 1.647, 5.537), `|observed-modeled|` = c(0.0001891, 0.1633, 
0.539, 1.002, 1.647, 5.537)), .Names = c("Observed-modeled", 
"|observed-modeled|"), row.names = c("Min.", "1st Qu.", "Median", 
"Mean", "3rd Qu.", "Max."), class = "data.frame") 

İstasyon T2:

newstT <- cbind(stT1,stT2) 

> newstT 
     Observed-modeled |observed-modeled| Observed-modeled |observed-modeled| 
Min.   -1.5360000   0.0001891   -2.3740   0.001259 
1st Qu.  0.0002512   0.1633000   -1.2280   0.674700 
Median   0.3593000   0.5390000   -0.6202   1.101000 
Mean   0.8554000   1.0020000   -0.2094   1.085000 
3rd Qu.  1.6470000   1.6470000   0.7418   1.413000 
Max.   5.5370000   5.5370000   5.0530   5.053000 

Ben istasyon T1 ve istasyon T2 eklemek mümkün değildi şu şekildedir:

> stT2 
     Observed-modeled |observed-modeled| 
Min.    -2.3740   0.001259 
1st Qu.   -1.2280   0.674700 
Median   -0.6202   1.101000 
Mean    -0.2094   1.085000 
3rd Qu.   0.7418   1.413000 
Max.    5.0530   5.053000 

> dput(stT2) 
structure(list(`Observed-modeled` = c(-2.374, -1.228, -0.6202, 
-0.2094, 0.7418, 5.053), `|observed-modeled|` = c(0.001259, 0.6747, 
1.101, 1.085, 1.413, 5.053)), .Names = c("Observed-modeled", 
"|observed-modeled|"), row.names = c("Min.", "1st Qu.", "Median", 
"Mean", "3rd Qu.", "Max."), class = "data.frame") 

Ben iki istasyondan kombine İstenen şekilde gösterildiği gibi üstte.

+1

'xtable' içinde' add.to.row 'dosyasına bakmak isteyebilirsiniz. – asb

cevap

5

tables paket inşa tablolara farklı bir yaklaşım vardır ve çıkışa bir latex.tabular yöntemi alakalı lateks vardır.

veri uzun biçimde

library(tables) 

# rbind with rownames as a column 
st <- rbind(
    data.frame(stT1, station = 'T1', what = factor(rownames(stT1), levels = rownames(stT1)), 
      row.names= NULL, check.names = FALSE), 
    data.frame(stT2,station = 'T2',what = factor(rownames(stT2), levels = rownames(stT2)), 
      row.names = NULL,check.names = FALSE) 
    ) 


mytable <- tabular(Heading()*what ~ station*(`Observed-modeled` +`|observed-modeled|`)*Heading()*(identity),data=st) 
mytable                     
##   station                 
##   T1         T2         
##   Observed-modeled |observed-modeled| Observed-modeled |observed-modeled| 
## Min. -1.5360000  0.0001891   -2.3740   0.001259   
## 1st Qu. 0.0002512  0.1633000   -1.2280   0.674700   
## Median 0.3593000  0.5390000   -0.6202   1.101000   
## Mean  0.8554000  1.0020000   -0.2094   1.085000   
## 3rd Qu. 1.6470000  1.6470000   0.7418   1.413000   
## Max.  5.5370000  5.5370000   5.0530   5.053000 

yer alıyorsa, bu en iyi çalışır Eğer sonuçlar üzerinde sahip ince kontrolü büyük bir anlaşma. Bunlar vignette'da açıklanmıştır.

Yukarıdaki örnekte, Heading()'un bir sütunun başlıklarını bastıracağını (veya değiştireceğini) görürsünüz. identity her birleşimi özetlemek için kullanılan işlevdir. Ve

belirtildiği üzere

söz

yılında Heading()* sütunu kullanarak herhangi bir sütun başlığını kaldırabilirsiniz yukarıda da (multicolumns ile)

latex(mytable) 


\begin{tabular}{lcccc} 
\hline 
& \multicolumn{4}{c}{station} \\ 
& \multicolumn{2}{c}{T1} & \multicolumn{2}{c}{T2} \\ 
    & Observed-modeled & |observed-modeled| & Observed-modeled & \multicolumn{1}{c}{|observed-modeled|} \\ 
\hline 
Min. & $-1.5360000$ & $0.0001891$ & $-2.3740$ & $0.001259$ \\ 
1st Qu. & $\phantom{-}0.0002512$ & $0.1633000$ & $-1.2280$ & $0.674700$ \\ 
Median & $\phantom{-}0.3593000$ & $0.5390000$ & $-0.6202$ & $1.101000$ \\ 
Mean & $\phantom{-}0.8554000$ & $1.0020000$ & $-0.2094$ & $1.085000$ \\ 
3rd Qu. & $\phantom{-}1.6470000$ & $1.6470000$ & $\phantom{-}0.7418$ & $1.413000$ \\ 
Max. & $\phantom{-}5.5370000$ & $5.5370000$ & $\phantom{-}5.0530$ & $5.053000$ \\ 
\hline 
\end{tabular} 

uygun tablo lateks nesne yaratacak olduğunu göstermek için örneğin "kaldırmak için istasyon "ilk satırdan" (tüm sütunlar için bir başlık olarak)

tabular(Heading()*what ~ Heading()*station*(`Observed-modeled` +`|observed-modeled|`)*Heading()*(identity),data=st) 
+0

Masa paketini işaret ettiğiniz için çok teşekkür ederim. Yaklaşımınız benim aradığım şeyi yapıyor. –

+0

Üst sıradaki istasyondan kurtulmak mümkün mü? Dinlenme mükemmeldir. İki hat yerine “istasyon” ve sonra “T1” ve “T2” yerine sadece “T1” ve “T2” yi istiyorum. Lateks kodundaki satırı manuel olarak silebilirim, ancak knitr kullanıyorum ve kodla silebilirsem yardımcı olabilirdim. –

+0

@Jdbaba - 'Heading() * istasyonunu kullanarak - düzenlenmiş cevaba bakınız. – mnel

İlgili konular