2017-09-22 22 views
2

我有一个R中的数据框,看起来像这样。如何合并r中数据框中的列标题

Housing = c("Average Housing Year Built", 
     "Owner Occupied", 
     "Occupied Units", 
     "Rent as a Percent of MFI", 
     "All Residents", 
     "Hispanic/Latino", 
     "White", 
     "Black", 
     "Asian") 

Values = c(1920, 5065886, 7255261, 99444.94, "20.54%", "27.7%", "18.67%", 
      "36.64%", "42.42%") 

Housing = data.frame(Housing, Values) 

我想列标题合并 - Housing$Housing & Housing$Values到名为Housing_characteristics一个单细胞和数据帧的其余部分必须是相同的。完全像一个Excel电子表格。

https://i.stack.imgur.com/J7AjF.jpg

我所要的输出是这个样子 - https://i.stack.imgur.com/qHd0C.jpg

我有一堆我显示在RShiny应用这些数据帧,需要格式化为标题一个干净的外观。

谢谢!

+0

2.5你可以提供你想要一个样本输出? –

+0

您想要的输出不清晰。合并列标题意味着什么?您可以创建一个名为“Housing characteristics”的新列 –

+0

我编辑了我的帖子以包含我试图实现的输出。我可以创建一个新列并合并所有内容,但我希望只合并列标题,以便值之间的分界清晰。我非常感谢任何帮助! –

回答

2

这可能是你能得到的最接近的事:

library(stargazer) 
stargazer(Housing, summary = FALSE, type = "text", 
      rownames = FALSE, align = TRUE, title = "Housing Characteristics") 

文本表:

Housing Characteristics 
=================================== 
     Housing   Values 
----------------------------------- 
Average Housing Year Built 1920 
     Owner Occupied  5065886 
     Occupied Units  7255261 
Rent as a Percent of MFI 99444.94 
     All Residents   20.54% 
    Hispanic/Latino  27.7% 
      White    18.67% 
      Black    36.64% 
      Asian    42.42% 
----------------------------------- 

注意,这不是一个data.frame。这是一个输出到你的控制台的文本表格,所以你不能像data.frame那样操纵它。

如果你的罚款在你闪亮的应用乳胶表,你也可以使用type = latex选项,这是默认的:

library(stargazer) 
stargazer(Housing, summary = FALSE, header = FALSE, 
      title = "Housing Characteristics") 

乳胶代码:

\begin{table}[!htbp] \centering 
    \caption{Housing Characteristics} 
    \label{} 
\begin{tabular}{@{\extracolsep{5pt}} cc} 
\\[-1.8ex]\hline 
\hline \\[-1.8ex] 
Housing & Values \\ 
\hline \\[-1.8ex] 
Average Housing Year Built & 1920 \\ 
Owner Occupied & 5065886 \\ 
Occupied Units & 7255261 \\ 
Rent as a Percent of MFI & 99444.94 \\ 
All Residents & 20.54\% \\ 
Hispanic/Latino & 27.7\% \\ 
White & 18.67\% \\ 
Black & 36.64\% \\ 
Asian & 42.42\% \\ 
\hline \\[-1.8ex] 
\end{tabular} 
\end{table} 

enter image description here

这将看起来相当不错,在一个闪亮的应用程序!

+0

非常感谢使用R!这看起来非常酷,我应该更多地探索这些表格!快速的问题,但我怎么会通过我的应用程序渲染?我试图将你的代码插入到服务器端的一个输出对象中,只得到了Latex代码。没有在第二张图片中获取输出表。我目前正在使用一组renderTables和renderDataTables,这些renderTables和renderDataTables被制表符设置为显示不同的属性。 –

+0

@AshwinRamesh在'shiny'中有一个名为'withMathJax'的函数,可以渲染乳胶。你可能想看看这个:https://stackoverflow.com/questions/22251956/output-a-good-looking-matrix-using-rendertable。如果你仍然有问题,最好专门提出一个关于渲染乳胶桌面的新问题 – useR

2

修改显示的输出而不是data.frame。下面将得出一个交互式表标题,并仍然允许列进行排序:

library(DT) 

sketch = htmltools::withTags(table(
    class = 'display', 
    thead(
    tr(
     th(colspan = 2, 'Housing Characteristics') 
    ), 
    tr(
     th('Description'), 
     th('Values') 
    ) 
) 
)) 

datatable(Housing, container = sketch, rownames = FALSE) 

enter image description here

例如,从部分衍生的http://rstudio.github.io/DT/

相关问题