(# Я обновил свой вопрос, кстати, благодаря @Sammy ;-))
Я хочу построить диаграммы Венна с помощью пакета VennDiagram.
Заранее мне нужно правильно обобщить свои данные, но я не могу найти хорошую команду для простого и автоматического достижения цели.
Мой фрейм данных выглядит следующим образом:
str(a)
'data.frame': 401 obs. of 3 variables:
$ quant : int 77 55 66 55 44 11 22 33 66 588 ...
$ condition: Factor w/ 3 levels "a","b","c": 1 1 1 1 1 1 1 1 1 1 ...
$ name : Factor w/ 389 levels "dukthw1","dukthw10",..: 126 150 160 171 182 193 203 213 224 127 ...
> head(a)
quant condition name
1 77 a jkhsgf1
2 55 a jkhsgf2
3 66 a jkhsgf3
4 55 a jkhsgf4
5 44 a jkhsgf5
6 11 a kluhswrg10
Хотелось бы:
1 / сколько «имен» являются общими для факторов, например:
а и б = 10
а и с = 8
b и c = 8
а, б и в = 3
2 / какие имена являются общими в отношении предыдущей статистики от 1 /.
Вот что позволяет мне получить информацию и реализовать диаграмму:
library(VennDiagram)
a<- read.delim("test2.txt")
aaa<-table(a$condition, a$name)
ta<-t(aaa)
assay<-as.data.frame.matrix(ta)
str(assay)
head(assay)
nrow(subset(assay, a == 1))
nrow(subset(assay, b == 1))
nrow(subset(assay, c == 1))
nrow(subset(assay, a == 1 & b == 1))
nrow(subset(assay, b == 1 & c == 1))
nrow(subset(assay, a == 1 & c == 1))
nrow(subset(assay, a == 1 & b == 1 & c == 1))
draw.triple.venn(area1 = 112, area2 = 160, area3 = 129, n12 = 10, n23 = 7, n13 = 6,
n123 = 4, category = c("a", "b", "c"), lty = "blank",
fill = c("skyblue", "pink1", "mediumorchid"))
ОДНАКО
Я все еще не счастлив, потому что он привередлив. Это всего лишь небольшой пример с фреймом данных, но что, если у нас будет огромный фрейм данных с сотнями условий вместо только «a», «b» и «c»? Я не мог набрать по одному "nrow (subset (assay, c == 1)) ...".
Кто-нибудь знает лучший способ суммировать мои данные так, как я хочу, и получать результаты непосредственно в виде таблицы или фрейма данных? Что-то автоматизировано или лучшая команда? Те же проблемы с VennDiagram, я нахожу очень привередливым, если у нас есть более 3 групп, чтобы вручную ввести все общие числа для каждой группы в "draw.triple.venn (area1 = 112, ...)".
Я приложил .txt файл моего (маленького) примера с фреймом данных:
https://www.dropbox.com/s/kj9hdze83xeltlz/test.txt?dl=0
Большое спасибо заранее, если вы можете помочь!