众所周知,R很容易处理大数据.我遇到的问题是将R中执行的分析结果放在表格中以供发布.
我想在一个例子中解释一下.我们有这个简单的数据集:
value<-cbind(c(rnorm(100,500,90),rnorm(100,800,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))
Run Code Online (Sandbox Code Playgroud)
我想分析一个科学项目的数据.要提取我需要的信息,我必须这样做:
> quantile(subset(df,gender=="M")$value)
0% 25% 50% 75% 100%
323.6955 523.1237 655.6593 828.7438 1045.0406
> quantile(subset(df,gender=="F")$value)
0% 25% 50% 75% 100%
233.3721 520.1101 633.8767 802.2277 1149.3072
> wilcox.test((subset(df,gender=="M")$value),(subset(df,gender=="F")$value))$p.value
[1] 0.924699
> table(df$genotype)
A B
100 100
> table(df$gender)
F M
150 50
> prop.test(50,150)$p.value
[1] 6.311983e-05
> table(df$genotype,df$gender)
F M
A 75 25
B 75 25
> prop.table(table(df$genotype,df$gender),2)
F M
A 0.5 0.5
B 0.5 0.5
> prop.test(c(75,25),c(125,50))$p.value
[1] 0.2990147
Run Code Online (Sandbox Code Playgroud)
嗯,这给了我所需要的所有信息,但是从创建出版质量表还有很长的路要走.为此,我必须将结果中的数字复制/粘贴到Excel中.最终产品是这样的:
问题是复制/粘贴是不方便的,可能会因大量数据而变得乏味,并且会产生人为错误的可能性.有没有办法直接在R中"编程"或"编码"这个表,这样我就可以运行代码并将输出保存为.csv文件?
您可以使用该Publish软件包(在CRAN上还没有,但可以从GitHub获得).
library(devtools)
install_github("tagteam/Publish")
library(Publish)
Run Code Online (Sandbox Code Playgroud)
然后你可以使用这个univariateTable函数来准确地得到你要求的(Q请求中位数和IQR)
univariateTable(gender ~ Q(value) + genotype, data=df)
Variable Level gender = M (n=50) gender = F (n=150)
1 value median [iqr] 647.0 [488.4, 829.0] 615.4 [493.5, 797.4]
2 genotype A 25 (50.0) 75 (50.0)
3 B 25 (50.0) 75 (50.0)
Total (n=200) p-value
1 617.9 [491.0, 812.4] 0.666
2 100 (50.0)
3 100 (50.0) 1.000
Run Code Online (Sandbox Code Playgroud)
该函数返回一个数据框,可以使用,比如说write.table或类似的东西轻松保存到文本文件中.