簡體   English   中英

將summary_table與qwraps2 package一起使用時如何跳過NA值?

[英]How to skip NA values when using summary_table with qwraps2 package?

我正在嘗試使用 qwraps2 制作基線特征表。 我的數據是:

> str(joined_df2)
'data.frame':   259 obs. of  23 variables:
 $ SUBJID  : chr  "S001011" "S001013" "S001016" "S001017" ...
 $ AGE     : num  72 74 65 46 59 71 71 64 63 58 ...
 $ AGEU    : chr  "YEARS" "YEARS" "YEARS" "YEARS" ...
 $ FASFL.x : chr  "Y" "Y" "Y" "Y" ...
 $ SAFFL   : chr  "Y" "Y" "Y" "Y" ...
 $ TRT01P  : chr  "Treatment B" "Treatment A" "Treatment B" "Treatment B" ...
 $ HGTBL   : num  1.68 1.57 1.73 1.8 1.78 ...
 $ HGTBLU  : chr  "m" "m" "m" "m" ...
 $ WGTBL   : num  224 187 70.7 123.9 70.9 ...
 $ WGTBLU  : chr  "lb" "lb" "kg" "kg" ...
 $ DIABDUR : num  8 22 20 6 9 7 12 12 6 5 ...
 $ DIABDURU: chr  "years" "years" "years" "years" ...
 $ FASFL.y : chr  "Y" "Y" "Y" "Y" ...
 $ TRTP    : chr  "Treatment B" "Treatment A" "Treatment B" "Treatment B" ...
 $ AVISIT  : chr  "Visit 10 (Week 0)" "Visit 10 (Week 0)" "Visit 10 (Week 0)" "Visit 10 (Week 0)" ...
 $ VISITNUM: num  10 10 10 10 10 10 10 10 10 10 ...
 $ PARAM   : chr  "HbA1c Blood (%)" "HbA1c Blood (%)" "HbA1c Blood (%)" "HbA1c Blood (%)" ...
 $ PARAMCD : chr  "C64849B" "C64849B" "C64849B" "C64849B" ...
 $ AVAL    : num  8.6 8.4 7 7.3 8.2 7.7 7.3 8.8 7.3 8.4 ...
 $ AVALU   : chr  "%" "%" "%" "%" ...
 $ ANL01FL : chr  "Y" "Y" "Y" "Y" ...
 $ ANL01REA: chr  NA NA NA NA ...
 $ TRTP2   : chr  "Treatment B" "Treatment A" "Treatment B" "Treatment B" ...

我想包括變量 AGE 的平均值 (SD)、中值、最小值、最大值,並按 TRTP2 分組。 變量 AGE 包含兩個 NA 值:

> joined_df2[is.na(joined_df2$ AGE),]
     SUBJID AGE AGEU FASFL.x SAFFL TRT01P HGTBL HGTBLU WGTBL WGTBLU DIABDUR DIABDURU FASFL.y        TRTP            AVISIT VISITNUM           PARAM PARAMCD AVAL AVALU ANL01FL ANL01REA       TRTP2
18  S001054  NA <NA>    <NA>  <NA>   <NA>    NA   <NA>    NA   <NA>      NA     <NA>       Y Treatment A Visit 10 (Week 0)       10 HbA1c Blood (%) C64849B  8.4     %       Y     <NA> Treatment A
146 S051018  NA <NA>    <NA>  <NA>   <NA>    NA   <NA>    NA   <NA>      NA     <NA>       Y Treatment A Visit 10 (Week 0)       10 HbA1c Blood (%) C64849B  7.4     %       Y     <NA> Treatment A

當我運行代碼時,我收到一個錯誤:

> library(qwraps2)
> options(qwraps2_markup = 'markdown') # default is latex

> joined_df2_summaries <-
+   list("Age (yrs)" =
+          list(
+            "Mean (SD)"    = ~ qwraps2::mean_sd(AGE, denote_sd = "paren"),
+            "Median"       = ~ qwraps2::median_iqr(AGE),
+            "Min:"         = ~ min(AGE),
+            "Max:"         = ~ max(AGE)))

> summary_table(dplyr::group_by(joined_df2, TRTP2), joined_df2_summaries)

Error in quantile.default(x, probs = c(1, 3)/4, na.rm = na_rm) : 
  missing values and NaN's not allowed if 'na.rm' is FALSE

我嘗試在內部使用 na.rm=TRUE ,但沒有幫助:

> joined_df2_summaries <-
+   list("Age (yrs)" =
+          list(
+            "Mean (SD)"    = ~ qwraps2::mean_sd(AGE, denote_sd = "paren", na.rm=TRUE),
+            "Median"       = ~ qwraps2::median_iqr(AGE, na.rm=TRUE),
+            "Min:"         = ~ min(AGE, na.rm=TRUE),
+            "Max:"         = ~ max(AGE, na.rm=TRUE)))
> summary_table(dplyr::group_by(joined_df2, TRTP2), joined_df2_summaries)
Error in qwraps2::mean_sd(AGE, denote_sd = "paren", na.rm = TRUE) : 
  unused argument (na.rm = TRUE)

如何計算不包括 NA 值的 AGE 的平均值等?

我會使用expss來解決這個問題。 您可以輕松地按分類變量分組並使用expss獲取摘要統計信息。 例如:

  mtcars %>% expss::tab_cells(mpg,hp,qsec) %>%
   tab_cols(gear) %>%  # we will make rows with `gear` with transpose command later
   tab_stat_fun("My Mean Label"=w_mean,
                 w_sd,
                 w_min,
                 w_max, method='list', label = "|") %>%
   tab_pivot() %>% 
   tab_transpose() %>%   # take the result and flip it
   htmlTable()

忽略qwraps2::mean_sdqwraps2::median_iqr中缺失值的論點不是na.rm而是na_rm 嘗試這個:

joined_df2_summaries <-
   list("Age (yrs)" =
          list(
            "Mean (SD)"    = ~ qwraps2::mean_sd(AGE, na_rm = TRUE, denote_sd = "paren"),
            "Median"       = ~ qwraps2::median_iqr(AGE, na_rm = TRUE),
            "Min:"         = ~ min(AGE),
            "Max:"         = ~ max(AGE)))

summary_table(joined_df2, summaries = joined_df2_summaries, by = "TRTP2")

暫無
暫無

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

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