【问题标题】:How to merge Column headers in dataframe in r如何在r中合并数据框中的列标题
【发布时间】:2017-09-23 03:18:38
【问题描述】:

我在 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$HousingHousing$Values 合并到一个名为 Housing_characteristics 的单个单元格中,并且数据框的其余部分必须相同。就像 Excel 电子表格一样。

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

我希望输出看起来像这样 - https://i.stack.imgur.com/qHd0C.jpg

我在 RShiny 应用程序中显示了一堆这样的数据帧,需要格式化标题以获得干净的外观。

谢谢!

【问题讨论】:

  • 你能提供你想要的样本输出吗?
  • 你想要的输出不清楚。合并列标题是什么意思?您可以创建一个名为“住房特征”的新列
  • 我已经编辑了我的帖子以包含我想要实现的输出。我可以创建一个新列并合并所有内容,但我希望只合并列标题,以便值之间的分界清晰。非常感谢任何帮助!
  • 我认为这在 R 中是不可能的,因为一个通用的标题会暗示它是一个单独的列,而它们不是。如果您想将其输出为可读性好的表格而不将其存储为data.frame,那么乳胶表格有一些选项。

标签: r excel dataframe


【解决方案1】:

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

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}

这在闪亮的应用程序上看起来相当不错!

【讨论】:

  • 非常感谢用户!这看起来真的很酷,我应该更多地探索这些表格!快速的问题,我将如何通过我的应用程序呈现这个?我试图将您的代码插入到服务器端的一个输出对象中,并且只获得了 Latex 代码。没有在第二张图片中获得输出表。我目前混合使用了 renderTables 和 renderDataTables,它们通过选项卡设置以显示不同的属性。
  • @AshwinRamesh 在shiny 中有一个名为withMathJax 的函数可以渲染乳胶。你可能想看看这个:stackoverflow.com/questions/22251956/…。如果您仍然遇到问题,最好提出一个新问题,专门关于在闪亮中呈现乳胶表
【解决方案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)

示例来自http://rstudio.github.io/DT/ 的第 2.5 节

【讨论】:

    猜你喜欢
    • 2022-01-25
    • 2021-07-02
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    相关资源
    最近更新 更多