假设我有以下内容data.frame
:
values<-runif(72)
factorA<-rep(c(rep('a',9),rep('b',9)),2)
criterion<-rep(rep(c(rep('1/4',3),rep('1/2',3),rep('2/3',3)),4),2)
case<-rep(c(rep('1',18),rep('2',18)),2)
samp<-rep(c('10','20','30'),24)
datasets<-c(rep('1',36),rep('2',36))
df<-data.frame(values,factorA,criterion,case,samp,datasets)
我想用来ggplot
绘制values
两者之间的平均值datasets
。如果我仅考虑子集datasets='1'
,则要构建以下图
library(ggplot2)
library(directlabels)
ggplot(subset(df,datasets %in% '1'),aes(x=samp,y=values,group=criterion))+
geom_line(aes(linetype = criterion),size=1)+
facet_grid(case~factorA,scales='free',space='free')+
geom_dl(aes(label = criterion),method=list(dl.combine('first.qp','last.qp')))
作为values
随机获得。
我想精确地获得此图,但是其中每条线代表datasets
对应值的两者之间的均值的轨迹。例如,在面板中('a','1')
,直线上的点criterion='1/4'
和横坐标samp='10'
必须是datasets
1和2对应值的平均值;直线上的点criterion='1/4'
和横坐标samp='20'
必须是datasets
1和2对应值的平均值,依此类推。我该如何实现?我尝试过stat_summary()
但没有成功...
我认为您可以使用dplyr的group_by进行总结以完成您描述的内容。1)按数据框列以外的所有变量对df进行分组,并2)计算每组的值列的平均值:
library(tidyverse)
library(directlabels)
set.seed(1)
values<-runif(72)
factorA<-rep(c(rep('a',9),rep('b',9)),2)
criterion<-rep(rep(c(rep('1/4',3),rep('1/2',3),rep('2/3',3)),4),2)
case<-rep(c(rep('1',18),rep('2',18)),2)
samp<-rep(c('10','20','30'),24)
datasets<-c(rep('1',36),rep('2',36))
df<-data.frame(values,factorA,criterion,case,samp,datasets)
#calculate means of the value columns by group
df_means <- df %>%
group_by(case, factorA, samp, criterion) %>%
summarize(mean_value = mean(values))
ggplot(df_means,aes(x=samp,y=mean_value,group=criterion))+
geom_line(aes(linetype = criterion),size=1)+
facet_grid(case~factorA,scales='free',space='free')+
geom_dl(aes(label = criterion),method=list(dl.combine('first.qp','last.qp')))
检查所需的输出是否正确:
> df %>%
+ filter(criterion == '1/4', factorA == 'a', samp == '10', case == '1')
values factorA criterion case samp datasets
1 0.2655087 a 1/4 1 10 1
2 0.7942399 a 1/4 1 10 2
> mean(c(0.2655087, 0.7942399))
[1] 0.5298743
> df_means %>%
+ filter(criterion == '1/4', factorA == 'a', samp == '10', case == '1')
# A tibble: 1 x 5
# Groups: case, factorA, samp [1]
case factorA samp criterion mean_value
<chr> <chr> <chr> <chr> <dbl>
1 1 a 10 1/4 0.530
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句