Сумма ggplot и средние значения переменных

Я пытаюсь создать два графика, где ось X обоих будет именем файла (см. Небольшой пример организации данных ниже).

Для отдельного имени файла будет несколько вхождений определенного типа - каждое с другим значением M1.

    Phylum      M1   Filename
Acidobacteria 55.75 4461130.3
Acidobacteria 57.08 4461130.3
Acidobacteria 54.61 4461125.3
Acidobacteria 53.49 4461145.3
Acidobacteria 57.99 4461145.3
Acidobacteria 53.05 4461161.3
Acidobacteria 51.03 4461161.3
Acidobacteria 50.20 4461227.3
Acidobacteria 51.88 4461227.3

График 1: ось x — это экземпляры имени файла. по оси y указано, сколько раз каждый тип встречается для каждого имени файла (например, w/Acidobacteria = 2 для имени файла 4461145.3).

График 2: ось x — это экземпляры имени файла. ось ординат — это среднее значение M1 для каждого типа, которое встречается для каждого имени файла (например, с ацидобактериями (n = 2), mean_M1 = 55,74 для имени файла 4461145.3).

Точки на графике должны быть окрашены по типу, и для каждого имени файла сумма и среднее значение для каждого типа должны быть на вертикальной линии. В приведенном примере есть только одно название Phylum, что делает запрос немного тривиальным, но в моем наборе данных более 30 уникальных Phylum.

Я могу построить необработанные значения M1 для каждого типа (они тоже правильно окрашиваются) по имени файла, но я не могу понять номенклатуру для получения суммы и средних значений M1. Я пытался использовать lapply, но не могу понять, как включить его в ggplot.

FN = env.txt
myDF = read.csv(FN, header=TRUE, sep=' ')

f <- qplot(Filename, M1, data=myDF)
f + geom_point(aes(colour=factor(Phylum))) + theme(axis.text.x=element_text(angle=90, hjust=1))

e <- qplot(Filename, mean(M1), data=myDF)
e + geom_point(aes(colour=factor(Phylum))) + theme(axis.text.x=element_text(angle=90, hjust=1))

g <- ggplot(myDF, aes(Filename, M1))
g + geom_point(aes(colour=factor(Phylum))) + theme(axis.text.x=element_text(angle=90, hjust=1))

p <- ggplot(myDF, aes(Filename, mean(M1)))
p + geom_point() + facet_grid(. ~ Phylum) + theme(axis.text.x=element_text(angle=90, hjust=1))

q <- qplot(Filename, M1, data=myDF, fun.y='mean')
q + geom_point() + facet_grid(. ~ Phylum) + theme(axis.text.x=element_text(angle=90, hjust=1))

Изображения попыток можно увидеть здесь: http://imgur.com/srmR1rO Первая идея примерно правильная , но вместо того, чтобы иметь все значения M1, я хотел бы получить среднее значение. Я не пытался решить задачу суммирования.

Помощь высоко ценится.


person cer    schedule 18.12.2013    source источник


Ответы (1)


Почему бы не создать фрейм данных со средними и суммами M1, называемыми myDF.agg, используя plyr?

library(plyr)
FN = env.txt
myDF = read.csv(FN, header=TRUE, sep=' ')
myDF.agg = ddply(myDF, .(Filename, Phylum), summarize, mean_M1 = mean(M1), sum_M1 = sum(M1))
e.mean <- qplot(Filename, mean_M1, data=myDF.agg)
e.mean + geom_point(aes(colour=factor(Phylum))) + theme(axis.text.x=element_text(angle=90,     hjust=1))

e.sum <- qplot(Filename, sum_M1, data=myDF.agg)
e.sum + geom_point(aes(colour=factor(Phylum))) + theme(axis.text.x=element_text(angle=90,     hjust=1))
person keithing    schedule 18.12.2013