在qwraps2中使用summary_table时出错。 data.frame不正确吗?

时间:2019-01-21 08:51:08

标签: r dplyr qwraps2

我刚开始使用R,所以希望它不太基本。.
我正在尝试使用qwraps2创建一个摘要表。遵循精心编写的教程,没有任何问题(qwraps2),应用自己的数据集时遇到错误。

library(qwraps2)    
summary_tbl1 <-  
  list("Gender" =  
     list("Female" = ~ qwraps2::n_perc0(.data$gender == 0),  
          "Male" = ~ qwraps2::n_perc0(.data$gender == 1)),  
  "Mean age (sd)" = ~ qwraps2::mean_sd(.data$inage),  
  "Age categories" =  
     list("65-74" = ~ qwraps2::n_perc0(.data$age_cat == 1),  
          "75-84" = ~ qwraps2::n_perc0(.data$age_cat == 2),  
          "> 85" = ~ qwraps2::n_perc0(.data$age_cat == 3))  
   )

#making the overall column
c_overall <- summary_table(my_dataset, summary_tbl1)
  

错误:x必须是公式调用rlang::last_error()来查看回溯

回溯信息如下:

  
      
  1. stop(cnd)
  2.   
  3. rlang :: abort(x)
  4.   
  5. rlang :: f_rhs(y)
  6.   
  7. FUN(X [[i]],...)
  8.   
  9. lapply(s,function(y){rlang :: f_rhs(y)})
  10.   
  11. FUN(X [[i]],...)
  12.   
  13. lapply(摘要,函数{{lapply(s,function(y){rlang :: f_rhs(y)})...
  14.   
  15. eval(lhs,父母,父母)
  16.   
  17. eval(lhs,父母,父母)
  18.   
  19. lapply(摘要,函数{{lapply(s,function(y){rlang :: f_rhs(y)})...
  20.   
  21. summary_table.data.frame(new_dataset,summary_tbl1)
  22.   
  23. summary_table(new_dataset,summary_tbl1)
  24.   

我已经使用data.frame将数据集转换为as.data.frame,这是summary_table所需要的,据我所知。

我的数据集来自STATA(Haven软件包),这可能是答案,如果是这样的话-关于如何克服的任何想法?

还是与我的数据集大小(80.300磅)有关?

预先感谢

添加了摘要读数:

  

summary_tbl1
  $ Gender
  $ Gender $ Female
  〜qwraps2 :: n_perc0(.data $ gender == 0)
  $ Gender $ Male
  〜qwraps2 :: n_perc0(.data $ gender == 1)
  $ Mean age (sd)
  〜qwraps2 :: mean_sd(.data $ inage)
  $ Age categories
  $ Age categories $ 65-74
  〜qwraps2 :: n_perc0(.data $ age_cat == 1)
  $ Age categories $ 75-84
  〜qwraps2 :: n_perc0(.data $ age_cat == 2)
  $ Age categories $ > 85
  〜qwraps2 :: n_perc0(.data $ age_cat == 3)

2 个答案:

答案 0 :(得分:0)

您似乎已将所有内容收集到一个名为“性别”的列表中。看来您的数据格式为性别[(男性,女性),mean_age,age_categories()]。因此,您有一个名为“性别”的列表,其中包含一个未命名列表,一个数字名称“ mean_age”和一个名为“ age_categories”的命名列表。

答案 1 :(得分:0)

@phi答案是正确的。为了更详细地解释它,摘要是 应该是列表列表。也就是说,其中每个元素是一个 列表。

让我们看一下提供的摘要的结构:

summary_tbl1 <-  
  list("Gender" =  
       list("Female" = ~ qwraps2::n_perc0(.data$gender == 0),  
            "Male"   = ~ qwraps2::n_perc0(.data$gender == 1)
           ),  
       "Mean age (sd)" = ~ qwraps2::mean_sd(.data$inage),  
       "Age categories" =  
         list("65-74" = ~ qwraps2::n_perc0(.data$age_cat == 1),  
              "75-84" = ~ qwraps2::n_perc0(.data$age_cat == 2),  
              "> 85"  = ~ qwraps2::n_perc0(.data$age_cat == 3)
             )  
       )

str(summary_tbl1, max.level = 1)
#> List of 3
#>  $ Gender        :List of 2
#>  $ Mean age (sd) :Class 'formula'  language ~qwraps2::mean_sd(.data$inage)
#>   .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
#>  $ Age categories:List of 3

第一个和第三个元素是列表,但是第二个元素是公式。 摘要的正确规范是:

summary_tbl1 <-  
  list("Gender" =  
       list("Female" = ~ qwraps2::n_perc0(.data$gender == 0),  
            "Male"   = ~ qwraps2::n_perc0(.data$gender == 1)
           ),  
       "inage" =
        list("Mean age (sd)" = ~ qwraps2::mean_sd(.data$inage)
            ), 
       "Age categories" =  
        list("65-74" = ~ qwraps2::n_perc0(.data$age_cat == 1),  
             "75-84" = ~ qwraps2::n_perc0(.data$age_cat == 2),  
             "> 85"  = ~ qwraps2::n_perc0(.data$age_cat == 3)
            )  
       )

str(summary_tbl1, max.level = 1)
#> List of 3
#>  $ Gender        :List of 2
#>  $ inage         :List of 1
#>  $ Age categories:List of 3

reprex package(v0.3.0)于2019-11-14创建