簡體   English   中英

R中的knitr :: kable()顯示變換系數表

[英]Transforming coefficient table in R for knitr::kable() display

R環境中,我有一組模型的參數估計值tibble()

              Model       term           estimate
              <chr>      <chr>              <chr>
1  Equation all_rev        ECT -0.175153366498138
2  Equation all_rev  Intercept -0.813722280439735
3  Equation all_rev all_rev -1 -0.552033103080694
4  Equation all_rev    mood -1  0.149186002525841
5  Equation all_rev zsc_med -1   9.67754263298424
6  Equation all_rev zmq_med -1    4.8674015065453
7  Equation all_rev all_rev -2 -0.286127265624132
8  Equation all_rev    mood -2  0.278054170570161
9  Equation all_rev zsc_med -2  -2.36086942618573
10 Equation all_rev zmq_med -2  -2.22689475852024
   ...              ...     ... ... 

將表轉換為類似於偶發表的格式的有效方法是什么? 如:

              Model       term           estimate
-------------------------------------------------
1  Equation all_rev        ECT -0.175153366498138
                     Intercept -0.813722280439735
                    all_rev -1 -0.552033103080694
                       mood -1  0.149186002525841
                    zsc_med -1   9.67754263298424
                    zmq_med -1    4.8674015065453
                    all_rev -2 -0.286127265624132
                       mood -2  0.278054170570161
                    zsc_med -2  -2.36086942618573
                    zmq_med -2  -2.22689475852024
2  Equation mood           ECT -0.175153366498138
                     Intercept -0.813722280439735
                    all_rev -1 -0.552033103080694
                       mood -1  0.149186002525841
                    zsc_med -1   9.67754263298424
                    zmq_med -1    4.8674015065453
                    all_rev -2 -0.286127265624132
                       mood -2  0.278054170570161
                    zsc_med -2  -2.36086942618573
                    zmq_med -2  -2.22689475852024
...                 ...         ...

基本上,如果行中有重復,我只想顯示第一行的值。 由於這實際上不是列聯表,並且主要單元是估計值,而不是頻率,因此無法使用table()命令或ftable()

特別是,我想使用knitr::kable()將結果編織到可以在PDF文檔中顯示的表中。

您可以用空字符串替換重復的值。 例如:

# Fake data
set.seed(2)
dat = data.frame(Model=rep(c("Equation all_rev", "Equation mood"), each=6),
                 Term=rep(LETTERS[1:6], 2),
                 Estimate=rnorm(12), 
                 stringsAsFactors=FALSE)
library(knitr)
library(dplyr)

kable(dat %>% mutate(Model = ifelse(duplicated(Model), "", as.character(Model))))
 |Model |Term | Estimate| |:----------------|:----|----------:| |Equation all_rev |A | -0.8969145| | |B | 0.1848492| | |C | 1.5878453| | |D | -1.1303757| | |E | -0.0802518| | |F | 0.1324203| |Equation mood |A | 0.7079547| | |B | -0.2396980| | |C | 1.9844739| | |D | -0.1387870| | |E | 0.4176508| | |F | 0.9817528| 

有時,您可能有幾個層次結構列,需要在其中刪除子組中的重復值。 在這種情況下,單獨duplicated不起作用。 有幾種方法可以進行。 這是一個例子:

# Add a second column with repeating sub-sets of the Model column
dat = dat %>% mutate(Sub_Model=rep(rep(c("Mal","Serenity"), each=3),2)) %>%
  select(1,4,2,3)

# Remove repeated values by group
dat[1:nrow(dat) %% 6 != 1, 1] = ""
dat[1:nrow(dat) %% 3 != 1,2] = ""

kable(dat)
 |Model |Sub_Model | Estimate|Term | |:----------------|:---------|----------:|:----| |Equation all_rev |Mal | -0.8969145|A | | | | 0.1848492|B | | | | 1.5878453|C | | |Serenity | -1.1303757|D | | | | -0.0802518|E | | | | 0.1324203|F | |Equation mood |Mal | 0.7079547|A | | | | -0.2396980|B | | | | 1.9844739|C | | |Serenity | -0.1387870|D | | | | 0.4176508|E | | | | 0.9817528|F | 

如果使用xtable而不是kable ,那么還將添加其他格式,例如水平線或部分水平線。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM