我发现函数univariateTable
非常有助于处理更大的数据以获得漂亮,干净的表输出。但是在csv
中导出表后,我仍然需要手动执行一些操作,我宁愿在R中执行此操作以自动执行该过程并避免人为错误。
以下是带有表输出的示例代码,然后我将其导出为csv
value<-cbind(c(rnorm(103.251,503.24,90),rnorm(103.251,823.24,120)))
genotype<-cbind(c(rep("A",100),rep("B",100)))
gender<-rep(c("M","F","F","F"),50)
df<-cbind(value,genotype,gender)
df<-as.data.frame(df)
colnames(df)<-c("value","genotype","gender")
df$value<-as.numeric(as.character(df$value))
library(Publish)
summary(univariateTable(gender ~ Q(value) + genotype, data=df))
我遇到的两个问题是:
有没有办法以与此类似的方式对表格中的数字进行舍入:round(99.73)
有没有办法用,
替换-
在四分位数范围输出中的方式与此类似:gsub(", ","-","[503.7, 793.3]")
,而不是median [iqr]
它推出了median [IQR]
同样,我在导出表后手动执行这些操作,但对于较大的表,自动执行该过程会更方便。
答案 0 :(得分:2)
univariateTable
有一个数字参数,可用于舍入。要修改格式,可以检查univariateTable
返回的列表,找出需要更改的值的位置。
您的示例数据引发了错误,因此我对其进行了修改以使其运行并稍微清理了代码。
# devtools::install_github("tagteam/Publish")
library(Publish)
value <- c(rnorm(90, 103.251,503.24),rnorm(110, 103.251,823.24))
genotype <- rep(c("A","B"), each=100)
gender <- rep(c("M","F","F","F"),50)
df <- data.frame(value,genotype,gender)
digits
的{{1}}参数可用于舍入(有关该函数的帮助信息,请参阅univariateTable
)。
?univariateTable
要将逗号更改为连字符,我们需要查看这些值存储在tab = univariateTable(gender ~ Q(value) + genotype, data=df, digits=0)
返回的列表中的位置。运行univariateTable
,它会显示列表的结构。请注意,表格中的标题值看起来像是存储在str(tab)
和tab$summary.groups$value
中,因此我们会对其进行编辑:
tab$summary.totals$value