12

すべてのデータ処理を SPSS+Excel ではなく Rmarkdown に移行しようとしていますが、グラフを追加してテーブルを作成する方法がわかりません。

理想的なテーブル

Excel では、スパークライン機能を使用してこれを行うことができます。または、私が行っているように、グラフを作成して非常に正確に配置するだけです。

上記の表は、Tables パッケージ (および Pander) の表関数を使用して作成されています。Excel に貼り付けてグラフ (およびグラフのヘッダー) を作成します。

library(tables)
library(pander)
pander( #convert table to rmarkdown table
  tabular( 
  (Species + 1) ~ (n=1) + Format(digits=2) *
         (Sepal.Length + Sepal.Width) * (mean + sd), 
  data = iris),
  caption = "Table 1. Iris") #Heading for table

誰かがこのようなものを作成しましたか?パッケージがテーブルとグラフを一緒に一致させることができるかどうかは懐疑的ですが、gridExtra パッケージを使用した回避策かもしれません。


編集 - これまでの私の解決策。
HTMLが完成しました。PDFで途中まで。ドキュメントの場合、それは可能ではないと思います(Excelにコピーして貼り付けます)。

HTML テーブル
まず、R は私が html、pdf、または doc をレンダリングしているかどうかを認識します。out_type の値は、"html"、"pdf"、および "docx" です。このオブジェクトを if ステートメントで使用できます。

out_type <- knitr::opts_knit$get("rmarkdown.pandoc.to")

バーは次のとおりです。

    if(out_type == "html"){ #if output is html then:
        my_table$Mean_Sepal_Length <- paste0( #I have a table saved as a dataframe. I add a column to it called Mean_Sepal_Length
"<span style=' width: 100%; display: flex;'><span style='display: inline-block; border-radius: 3px; padding-right: 0; background-color: #00457C; width:", #create the bar
        MEAN_SEPAL_L_OBJECT, #set the with of the bar. I have an object with these proportions
"%; margin-right: 5px;'>&nbsp;</span><span>", MEAN_SEPAL_L_VARIABLE, "%</span></span>") #finally add the value behind the bar.
    }

こんな感じ

2列にすることも可能です。

別の可能性

ここでもプロポーションのテーブルがあり、男性と女性のプロポーションを持つ 2 つのオブジェクトがあります。

    my_table$male_female <- paste0(
"<span style=' width: 100%; display: flex;'><span>", MALE_BAR, #the proportion of males
 "%</span><span style='display: inline-block;border-top-left-radius: 3px; border-bottom-left-radius:3px; padding: 0; background-color: #00457C; width:", MALE_BAR, #width of the bar for males
 "%; margin-left: 5px;'></span><span style='display: inline-block; border-top-right-radius: 3px; border-bottom-right-radius:3px; padding:0; background-color: #AC1A2F; width:",
 FEMALE_BAR, #width of bar for females
 "%;margin-right: 5px;'></span><span>", FEMALE_BAR, #proportion of females
 "%</span></span>")

もちろん、必要に応じて棒の中に数字を入れることもできますが、棒が小さい場合は問題になります。

PDF PDF
については、まだ十分に理解できていません。これまでの私の解決策は次のとおりです。

\begin{tabular}{>{$\rhd$ }lrl}
Loop at line 151 in divergence  & \mybar{3.420}\\
Loop at line 1071 in radiation  & \mybar{3.270}\\
scalar face value               & \mybar{3.090}\\
Loop at line 102 in get         & \mybar{1.700}\\
get sensible enthalpy           & \mybar{1.250}\\
\end{tabular}

PDF バー

見た目がよくありません。私はラテックスに非常に慣れていません。バーの後ろに数字を配置する方法を見つける必要があります。そして、これを関数の if ステートメントに入れる方法。HTML の場合: pdf の場合...

これが誰かに役立つことを願っています。ただし、このスレッドで言及されているパッケージを検討してください。それらは優れており、私のソリューションはそれらに非常に基づいています。パッケージで探していたものを正確に取得できなかったため、これを手動で行いました。

4

3 に答える 3

7

必要なのはformattable packageだと思います。スパークラインと formattable を混在させるもありますが、ニーズに合わせることができませんでした。

---
title: http://stackoverflow.com/q/32841221/680068
---

```{r cars}

library(dplyr)
library(formattable)

res <- 
  iris %>% 
  group_by(Species) %>% 
  summarise(N=n(),
            SL_Mean=round(mean(Sepal.Length),3),
            SL_SD=round(sd(Sepal.Length),3),
            SW_Mean=round(mean(Sepal.Width),3),
            SW_SD=round(sd(Sepal.Width),3))

#using formattable
formattable(res,
            list(
              SL_Mean=color_bar("pink", 0.5)))


```

ここに画像の説明を入力

于 2015-09-30T08:10:58.923 に答える