微调表输出功能' univariateTable'

时间:2016-01-24 16:04:33

标签: r csv rounding export-to-csv

我发现函数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))

我遇到的两个问题是:

  1. 有没有办法以与此类似的方式对表格中的数字进行舍入:round(99.73)

  2. 有没有办法用,替换-在四分位数范围输出中的方式与此类似:gsub(", ","-","[503.7, 793.3]"),而不是median [iqr]它推出了median [IQR]

  3. 同样,我在导出表后手动执行这些操作,但对于较大的表,自动执行该过程会更方便。

1 个答案:

答案 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