超级牛逼R包登场,compareGroups包轻松制作出SCI论文表一、表二、表三(1)

本来不想再写这个教程了,因为前面已经写过很多了,也说过R包TableOne。但是这个R包真是太牛了,可以很轻松的制作出SCI论文表一(基线资料表)和表二(单因素分析表),也能轻松做出sci论文中多个模型比较的表三(多因素分析表),还可以做出线性趋势(P for trend),可以毫不夸张的说,使用好这个R包,你可以写一篇简单的SCI论文了,下面的表格都可以通过compareGroups包轻松制作出来。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这种表也是可以做出来的,也不难
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
好的。废话不多说,马上开工。
我们除了需要compareGroups包外还需要导入一个glue包,不然就会报错。
我们还是使用既往的乳腺癌数据,先导入R包和查看数据

library(foreign)
library(compareGroups)
library(glue)
bc <- read.spss("E:/r/test/Breast cancer survival agec.sav",
                use.value.labels=F, to.data.frame=T)
bc <- na.omit(bc)
head(bc)

在这里插入图片描述
把分类变量转换成因子

####转换为因子
bc$age1 <- factor(bc$age1)
bc$lnpos <- factor(bc$lnpos)
bc$histgrad <- factor(bc$histgrad)
bc$er<- factor(bc$er)
bc$pr <- factor(bc$pr)
bc$status<- factor(bc$status)
bc$pathscat<- factor(bc$pathscat)
bc$ln_yesno<- factor(bc$ln_yesno)

先看总体人群变量分布

descrTable( ~ ., data = bc)

在这里插入图片描述
按病例组织学分组,用histgrad表示

descrTable( histgrad~ ., data = bc)####.符号代表包括其他的变量

在这里插入图片描述
好像还不错把,继续。假如不想要agec这个变量

descrTable( histgrad~age+pathsize+er+status+pathscat+ln_yesno+ time, data = bc)

在这里插入图片描述
假如某个变量如:pathsize是非正态分布的,可以进行指定

descrTable( histgrad~age+pathsize+er+status+pathscat+ln_yesno+ time, data = bc,method = c
            (pathsize=2))##用中位数表示

在这里插入图片描述
也可以自动检验是否正态分布

descrTable( histgrad~age+pathsize+er+status+pathscat+ln_yesno+ time, 
            data = bc,method = c(pathsize=NA))##自动检验是否正态分布

在这里插入图片描述
分组为二分类变量时可以比较重要的OR或HR值,现在以是否淋巴结肿大分组

descrTable( ln_yesno~age+pathsize+er+status+pathscat+histgrad+ time, 
            data = bc, ref= 1,show.ratio=T)##参考水平为1

在这里插入图片描述
也可以更改某组的参考水平

descrTable( ln_yesno~age+pathsize+er+status+pathscat+histgrad+ time, 
            data = bc, ref= c(pathscat=2),show.ratio=T)##更改参考水平为

在这里插入图片描述
更改连续变量每个P-SD,加入我想看年龄每增加10岁的改变

descrTable( ln_yesno~age+pathsize+er+status+pathscat+histgrad+ time, 
            data = bc, ref= 1,show.ratio=T,fact.ratio = 10)##参考水平为1,更改连续变量每个P-SD

在这里插入图片描述
调整小数点显示位数

descrTable( ln_yesno~age+pathsize+er+status+pathscat+histgrad+ time, 
            data = bc, ref= 1,show.ratio=T,digits = 3)##参考水平为1,调整小数点显示位数

在这里插入图片描述
最后再来个大招加入分层变量

tab<-descrTable( ln_yesno~age+pathsize+status+pathscat+histgrad+ time, 
            data = bc)
be<-strataTable(tab, "er")
be

在这里插入图片描述
导出数据

export2csv(tab,file = "tab.csv")
export2word(tab, file='table1.docx')

如图
在这里插入图片描述
稍微修改一下就可以发表了
参考文献:

  1. compareGroups包说明手册
  2. https://mp.weixin.qq.com/s/WDr9mwsv8–NPLEBjtRiZA
    更多精彩文章请关注公众号:零基础说科研
    在这里插入图片描述
  • 17
    点赞
  • 145
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
### 回答1: 根据余弦定理,可以用以下代码计算三角形的另一个边长:Dim a, b, c, A, B As Single A = 角度A的度数 B = 角度B的度数 a = 边a的长度 b = 边b的长度 c = (a * a + b * b - 2 * a * b * Cos(A + B)) ^ 0.5边c的长度为c。 ### 回答2: 在VB.NET中,我们可以使用三角函数来计算已知两个角度和边长,求另一边长。 首先,我们需要在代码中导入System.Math命名空间,以便使用数学函数。 然后,我们可以定义一个函数,传入两个已知的角度和边长,通过三角函数计算出另一边长。 下面是一个示例代码: ```vb Imports System.Math Public Class Triangle Public Shared Function CalculateThirdSide(angleA As Double, angleB As Double, sideA As Double) As Double Dim radianA As Double = angleA * PI / 180 ' 将角度转换为弧度 Dim radianB As Double = angleB * PI / 180 Dim sideC As Double = Sqrt(sideA ^ 2 + sideA ^ 2 - 2 * sideA * sideA * Cos(radianA - radianB)) ' 使用余弦定理计算第三边长 Return sideC End Function Public Shared Sub Main() Dim angleA As Double = 30 ' 已知角度A为30度 Dim angleB As Double = 60 ' 已知角度B为60度 Dim sideA As Double = 5 ' 已知边长A为5 Dim sideC As Double = CalculateThirdSide(angleA, angleB, sideA) Console.WriteLine("第三边长为:" & sideC) Console.ReadLine() End Sub End Class ``` 在上述代码中,我们定义了一个名为Triangle的类,其中含了一个静态方法CalculateThirdSide。该方法传入两个已知的角度和边长(angleA,angleB和sideA),并通过余弦定理(Cos函数)计算并返回第三边长sideC。在Main函数中,我们调用CalculateThirdSide方法,并打印出结果。 请注意,上述代码中假设两个已知角度为角度A和角度B,已知边长为边长A。如果实际情况不符合该假设,你可以根据具体情况修改代码。 ### 回答3: VB.NET的代码如下所示: Module MainModule Sub Main() Dim angleA, angleB As Double Dim sideA, sideB, sideC As Double Console.WriteLine("请输入已知角度A的值(单位为度):") angleA = Convert.ToDouble(Console.ReadLine()) Console.WriteLine("请输入已知角度B的值(单位为度):") angleB = Convert.ToDouble(Console.ReadLine()) Console.WriteLine("请输入已知边长A的值:") sideA = Convert.ToDouble(Console.ReadLine()) If angleA + angleB > 180 Or angleA <= 0 Or angleB <= 0 Or sideA <= 0 Then Console.WriteLine("输入不合法") Return End If Dim angleC = 180 - angleA - angleB sideB = sideA * Math.Sin(Math.PI * angleB / 180) / Math.Sin(Math.PI * angleA / 180) sideC = sideA * Math.Sin(Math.PI * angleC / 180) / Math.Sin(Math.PI * angleA / 180) Console.WriteLine("边长B的值为:" + sideB.ToString()) Console.WriteLine("边长C的值为:" + sideC.ToString()) Console.ReadLine() End Sub End Module 以上代码首先输入已知的角度A、角度B和边长A的值。然后,通过判断输入是否合法,判断输入的角度和边长是否满足三角形的条件。若不满足条件,则输出"输入不合法"并返回。若满足条件,则根据三角形的边长比例和正弦定理计算出边长B和边长C的值,并输出结果。 请注意,角度的输入单位为度,而正弦函数Sin的参数需要将角度转换为弧度,因此代码中使用了Math.PI * angle / 180公式进行转换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天桥下的卖艺者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值