如何将星星添加到broom软件包';s tidy()函数输出?

如何将星星添加到broom软件包';s tidy()函数输出?,r,dataframe,lm,tidyverse,broom,R,Dataframe,Lm,Tidyverse,Broom,我一直在使用R中的扫帚包的tidy()函数来打印我的模型摘要 但是,tidy()函数返回不带星星的p值,这对于许多习惯于在模型摘要中看到星星的人来说有点奇怪 有人知道向输出中添加星星的方法吗?这并不是tidy的真正目的。它用于从各种对象生成整洁的数据帧,而不是提供关于这些对象的额外度量 您可以编写一个函数,根据p值生成星号,并向使用tidy生成的数据框中添加一列。例如: make_stars <- function(pval) { stars = "" if(pval <=

我一直在使用R中的扫帚包的
tidy()
函数来打印我的模型摘要

但是,
tidy()
函数返回不带星星的p值,这对于许多习惯于在模型摘要中看到星星的人来说有点奇怪


有人知道向输出中添加星星的方法吗?

这并不是
tidy
的真正目的。它用于从各种对象生成整洁的数据帧,而不是提供关于这些对象的额外度量

您可以编写一个函数,根据p值生成星号,并向使用
tidy
生成的数据框中添加一列。例如:

make_stars <- function(pval) {
  stars = ""
  if(pval <= 0.001)
    stars = "***"
  if(pval > 0.001 & pval <= 0.01)
    stars = "**"
  if(pval > 0.01 & pval <= 0.05)
    stars = "*"
  if(pval > 0.05 & pval <= 0.1)
     stars = "."
  stars
}

我们可以使用
gtools
中方便的函数
stars.pval
来执行此操作

library(gtools)
library(broom)
library(dplyr)
data(mtcars)
mtcars %>%
   lm(mpg ~ wt + qsec, .) %>%
   tidy %>%
   mutate(signif = stars.pval(p.value))
#        term  estimate std.error  statistic      p.value signif
#1 (Intercept) 19.746223 5.2520617   3.759709 7.650466e-04    ***
#2          wt -5.047982 0.4839974 -10.429771 2.518948e-11    ***
#3        qsec  0.929198 0.2650173   3.506179 1.499883e-03     **

这个问题已经得到了回答,但我只想指出另一个选项,它比上面提到的
gtools::stars.pval更灵活,因为它根据您选择输入的内容返回数据帧或向量

#加载必要的库
图书馆(扫帚)
图书馆(dplyr)
库(groupedstats)
#使用函数
df%
统计数据::lm(mpg~wt+qsec,)%>%
扫帚::整洁(%)%%>%
groupedstats::signif_列(数据=,p=p.value)
df
#>#tibble:3 x 6
#>术语估计标准误差统计p值显著性
#>                                   
#>1(截距)19.75.253.767.65e-4**
#>2 wt-5.05 0.484-10.4 2.52e-11**
#>3 qsec 0.929 0.265 3.51 1.50e-3**

由(v0.3.0.9001)于2020年4月9日创建,由R中的
printCoefmat
函数使用,您也可以使用
stats
包中的
symnum
函数(包含在基本R中):

pv[1]“0'***'0.001'***'0.01'*'0.05.”“0.1''1”
由(v0.2.0)于2018年9月10日创建

或者,为了准确地回答你的问题,你可以这样使用它

库(dplyr)
pv%
统计数据::lm(mpg~wt+qsec,)%>%
扫帚::整洁(%)%%>%
变异(符号=as.character(星形函数(p.value)))
#>#tibble:3 x 6
#>术语估计标准误差统计p值符号
#>                            
#>1(截距)19.75.253.767.65e-4**
#>2 wt-5.05 0.484-10.4 2.52e-11**
#>3 qsec 0.929 0.265 3.51 1.50e-3**

由(v0.2.0)于2018-09-10创建。

这似乎没有返回任何内容。@jzadra感谢您指出这一点。我已经更新了答案,真奇怪。未指定的管道链的结果应与打印对象的结果相同。也许它没有打印方法。
library(gtools)
library(broom)
library(dplyr)
data(mtcars)
mtcars %>%
   lm(mpg ~ wt + qsec, .) %>%
   tidy %>%
   mutate(signif = stars.pval(p.value))
#        term  estimate std.error  statistic      p.value signif
#1 (Intercept) 19.746223 5.2520617   3.759709 7.650466e-04    ***
#2          wt -5.047982 0.4839974 -10.429771 2.518948e-11    ***
#3        qsec  0.929198 0.2650173   3.506179 1.499883e-03     **