2013-07-10 7 views
7

का उपयोग करके दो स्तंभों पर विस्तारित हेडर के साथ आर में एक तालिका बनाएं, मैं दो डेटाफ्रेम से तालिकाओं को जोड़ना चाहता हूं और उस तालिका को लेटेक्स में निर्यात करना चाहता हूं। जिस तालिका को मैं बनाना चाहता हूं वह निम्नानुसार दिखता है। नोट, नीचे दी गई तालिका एक्सेल का उपयोग करके बनाई गई है।xtable या किसी भी पैकेज

enter image description here

xtable से आर में मैं दो अलग-अलग स्टेशनों के लिए टेबल निर्यात करने में सक्षम था। दो स्टेशन टी 1 और टी 2 के लिए निम्नलिखित प्राप्त करें। वांछित आउटपुट प्राप्त करने के लिए मैं दो स्टेशनों के आउटपुट को कैसे जोड़ सकता हूं?

स्टेशन टी 1:

> 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") 

स्टेशन टी 2:

> 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") 

मैं दो स्टेशनों के रूप में इस संयुक्त:

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 

मैं स्टेशन टी 1 और स्टेशन टी 2 जोड़ने के लिए सक्षम नहीं था वांछित आकृति में दिखाए गए शीर्ष पर।

+1

आप'? xtable' में 'add.to.row'' देखना चाहते हैं। – asb

उत्तर

5

tables पैकेज में टेबल बनाने के लिए एक अलग दृष्टिकोण है और प्रासंगिक लेटेक्स को आउटपुट करने के लिए latex.tabular विधि है।

यह सबसे अच्छा काम करेंगे तो आपको अपने डेटा लंबे प्रपत्र

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 

का इन है ठीक नियंत्रण आप परिणामों से अधिक का एक बड़ा सौदा है। इन्हें vignette में वर्णित किया गया है।

उपर्युक्त उदाहरण में आप देख सकते हैं कि Heading() कॉलम के लिए शीर्षलेख दबाएगा (या बदलें) identity वह फ़ंक्शन है जिसका उपयोग प्रत्येक संयोजन को सारांशित करने के लिए किया जाता है।

और पता चलता है कि यह उचित सारणीबद्ध लेटेक्स वस्तु (multicolumns के साथ) का निर्माण करेगा

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} 

के रूप में उल्लेख किया ऊपर आप सवाल

में Heading()* स्तंभ का उपयोग किसी भी कॉलम हेडर को हटा सकते हैं दूर करने के लिए "जैसे स्टेशन "पहली पंक्ति से (सभी कॉलम के लिए एक शीर्षलेख के रूप में)

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

टेबल पैकेज को इंगित करने के लिए आपको बहुत बहुत धन्यवाद। आपका दृष्टिकोण वह है जो मैं ढूंढ रहा हूं। –

+0

क्या शीर्ष पंक्ति पर 'स्टेशन' से छुटकारा पाना संभव है? बाकी सही है। दो लाइनों 'स्टेशन' और फिर 'टी 1' और' टी 2' के बजाय, मुझे केवल 'टी 1' और' टी 2 'चाहिए। मैं लेटेक्स कोड में मैन्युअल रूप से लाइन को हटा सकता हूं, लेकिन मैं knitr का उपयोग कर रहा हूं और अगर मैं कोड के साथ हटा सकता हूं तो सहायक होगा। –

+0

@ जेडबाबा - 'शीर्षक() * स्टेशन' का उपयोग करके - संपादित उत्तर देखें। – mnel

संबंधित मुद्दे