【问题标题】:Export Cox regression results to excel or word using publish package使用发布包将 Cox 回归结果导出到 excel 或 word
【发布时间】:2021-07-20 09:19:38
【问题描述】:

看下面的代码

library(pec)
data(GBSG2,package="pec")
setDT(GBSG2)
GBSG2

library(survival)
library(prodlim)
library(Publish)

cox_lung <- coxph(Surv(time,cens)~tgrade+age+strata(menostat)+tsize+pnodes+progrec+estrec,data=GBSG2)
publish(cox_lung,org=TRUE)

输出:

> publish(cox_GBSG2,org=TRUE)
|  Variable | Units | HazardRatio |       CI.95 |   p-value |
|-----------+-------+-------------+-------------+-----------|
|    tgrade |     I |         Ref |             |           |
|           |    II |        1.86 | [1.14;3.03] |   0.01276 |
|           |   III |        2.24 | [1.32;3.78] |   0.00263 |
|       age |       |        0.99 | [0.97;1.01] |   0.27167 |
|     tsize |       |        1.01 | [1.00;1.01] |   0.06029 |
|    pnodes |       |        1.05 | [1.04;1.07] |   < 0.001 |
|   progrec |       |        1.00 | [1.00;1.00] |   < 0.001 |
|    estrec |       |        1.00 | [1.00;1.00] |   0.70522 |

我想知道是否有一种简单的方法可以将 bove 输出导出为 CSV、word 或 excel 文件。

【问题讨论】:

  • 是的,所有这些都是可能的,但不清楚你想要什么——你想要它是具有行、列和变量(csv、excel)的数据集格式还是与输出完全一样(文字,文本文件)
  • 这些选项中的任何一个都适合我,因此我可以轻松地对其进行编辑并将其添加到我的手稿中。为了澄清,我想把它作为一个 table (有行和列),不管是 csv、excel 还是 word。如果我只是选择此输出并复制并粘贴到 excel 或 word 文件中,将需要大量手工工作才能将其转换为表格。

标签: r statistics export-to-csv cox-regression safe-publication


【解决方案1】:

这是一种使用 capture.outputgsub 获取 csv 文件的方法。我也在显示中间步骤:

cox_out <- capture.output( publish(cox_lung,org=TRUE) )

# Demonstration of intermediates (don't need to do these

gsub("[|]", ",",cox_out)   # Change "|" to commas
 [1] ",  Variable , Units , HazardRatio ,       CI.95 ,   p-value ,"
 [2] ",-----------+-------+-------------+-------------+-----------,"
 [3] ",    tgrade ,     I ,         Ref ,             ,           ,"
 [4] ",           ,    II ,        1.86 , [1.14;3.03] ,   0.01276 ,"
 [5] ",           ,   III ,        2.24 , [1.32;3.78] ,   0.00263 ,"
 [6] ",       age ,       ,        0.99 , [0.97;1.01] ,   0.27167 ,"
 [7] ",     tsize ,       ,        1.01 , [1.00;1.01] ,   0.06029 ,"
 [8] ",    pnodes ,       ,        1.05 , [1.04;1.07] ,   < 0.001 ,"
 [9] ",   progrec ,       ,        1.00 , [1.00;1.00] ,   < 0.001 ,"
[10] ",    estrec ,       ,        1.00 , [1.00;1.00] ,   0.70522 ,"
[11] ""                                                             
gsub("[|]", ",",cox_out)[-2]   # Remove second line
 [1] ",  Variable , Units , HazardRatio ,       CI.95 ,   p-value ,"
 [2] ",    tgrade ,     I ,         Ref ,             ,           ,"
 [3] ",           ,    II ,        1.86 , [1.14;3.03] ,   0.01276 ,"
 [4] ",           ,   III ,        2.24 , [1.32;3.78] ,   0.00263 ,"
 [5] ",       age ,       ,        0.99 , [0.97;1.01] ,   0.27167 ,"
 [6] ",     tsize ,       ,        1.01 , [1.00;1.01] ,   0.06029 ,"
 [7] ",    pnodes ,       ,        1.05 , [1.04;1.07] ,   < 0.001 ,"
 [8] ",   progrec ,       ,        1.00 , [1.00;1.00] ,   < 0.001 ,"
 [9] ",    estrec ,       ,        1.00 , [1.00;1.00] ,   0.70522 ,"
[10] ""                                                             
gsub( "^,|,$", "", gsub("[|]", ",",cox_out)[-2] ) # wrap second gsub to take out leading and trailing commas
 [1] "  Variable , Units , HazardRatio ,       CI.95  ,   p-value "
 [2] "    tgrade ,     I ,         Ref ,             ,           "
 [3] "           ,    II ,        1.86 , [1.14;3.03] ,   0.01276 "
 [4] "           ,   III ,        2.24 , [1.32;3.78] ,   0.00263 "
 [5] "       age ,       ,        0.99 , [0.97;1.01] ,   0.27167 "
 [6] "     tsize ,       ,        1.01 , [1.00;1.01] ,   0.06029 "
 [7] "    pnodes ,       ,        1.05 , [1.04;1.07] ,   < 0.001 "
 [8] "   progrec ,       ,        1.00 , [1.00;1.00] ,   < 0.001 "
 [9] "    estrec ,       ,        1.00 , [1.00;1.00] ,   0.70522 "
[10] ""                                
#                         
cat( paste( gsub( "^,|,$", "", gsub("[|]", ",",cox_out)[-2] ), collapse="\n"), 
       # need paste( ... , colapse="\n") to append linefeeds at each line.
     file="cox_out.csv" )

使用write.table 可能比使用cat 更简洁(因为它避免了需要“手动”添加换行符):

cox_out <- capture.output( publish(cox_lung,org=TRUE) )
write.table( gsub( "^,|,$", "", gsub("[|]", ",",cox_out)[-2] ), file="cox_out.csv" )

【讨论】:

  • 谢谢,但是没有用。它将所有数据重新排列成一行,而不是一个表格。
  • @Allan 猫的功能可能有点奇怪。立即尝试。
  • 谢谢@IRTFM!这一次“猫”的效果非常好。
  • 感谢您让我注意到这个包。看起来很有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多