2017-02-17 4 views
1

벤 다이어그램에 삽입되는 :내가이 예를 같은 테이블이

breeds <- "tag Chr Position Breed 
chr1-2157 1 2157 BRL 
chr1-2157 1 2157 GOT 
chr1-2157 1 2157 HED 
chr1-2157 1 2157 KIN 
chr2-2185 2 2185 BRL 
chr2-2185 2 2185 GOT 
chr2-2185 2 2185 HED 
chr3-2189 3 2185 BRL" 
breeds <-read.table(text=breeds,header=T) 

그리고이 같은 논리적 테이블을 구성하고 싶습니다 :

final <- "tag BRL GOT HED KIN 
chr1-2157 TRUE TRUE TRUE TRUE 
chr2-2185 TRUE TRUE TRUE FALSE 
chr3-2189 TRUE FALSE FALSE FALSE" 
final <-read.table(text=final,header=T) 

을 마지막으로 그룹 분류 : 가능한 "true"및 "false"그룹의 고유 태그 수를 계산하여 최종적으로 venneuler 패키지를 사용하여 Venn Diagram에 포함될 각 그룹 수를 계산할 수 있습니다 Venn diagram proportional and color shading with semi-transparency)

답변

3

당신은 논리적 비교와 함께 table 기능이를 계산할 수 있습니다 : 그 자체로

with(breeds, table(tag, Breed)) > 0 
      Breed 
tag   BRL GOT HED KIN 
    chr1-2157 TRUE TRUE TRUE TRUE 
    chr2-2185 TRUE TRUE TRUE FALSE 
    chr3-2189 TRUE FALSE FALSE FALSE 

table 주파수 카운트를 생성합니다. > 0을 추가하면 논리가 반환됩니다. with은 타이핑을 줄이는 것일뿐입니다.

1

table은 분명 쉽습니다. 또 다른 방법은 breeds을 먼저 tag으로 나눈 다음 Breed으로 나누고 각 하위 그룹의 행 수를 계산하는 것입니다. 그냥 LMO의 솔루션처럼

t(sapply(split(breeds, breeds$tag), function(a) 
      sapply(split(a, a$Breed), function(b) 
             nrow(b)>0))) 

#   BRL GOT HED KIN 
#chr1-2157 TRUE TRUE TRUE TRUE 
#chr2-2185 TRUE TRUE TRUE FALSE 
#chr3-2189 TRUE FALSE FALSE FALSE 

는 당신이 처음에 얻을하는 주파수의 수와 >0 반환 전에 논리를 추가합니다.