2014-01-20 6 views
2

저는 R에서 연구를 시작하고 많은 포럼에서이 주제를 찾고 있어도 좋은 대답을 찾을 수 없었습니다. 어쩌면 나는 올바른 용어를 사용하여 검색하지 않을 수도 있고, R에서 할 수도없는 것일 수도 있으므로, 제발 내 사과의 말을 사과하십시오.R의 문자열 배열 조합

주어진 프로젝트에 2 명의 전문가가 몇 번이나 참여하는지 알고 싶습니다. 추가적으로, 나는 그들이 함께 발견 될 때 그들의 위치가 무엇인지를 매핑하고자한다.

아래 특정 표기법을 사용하지 않습니다.

Project1: Bob (President), Joe (Vice President), Mary (Participant), Paul (Participant) 
Project2: Bob (President), Joe (Vice President), Sue (Participant), Bill (Participant) 
Project3: Paul (President), Sue (Vice President), Bob (Participant), Joe (Participant) 
Project'n: (...) 

이 출력은 다음과 같습니다 : 밥 (대통령) & 조 (부사장) = 2 밥 (대통령) & 메리 (참가자) = 1 밥 예를 들어, 나는 다음과 같은 문자열 배열이 있다고 가정 (대통령) & 폴 (참가자) = 1 밥 (참가자) & 폴 (대통령) = 1 슈 (부사장) & 조 (참가자) = 1

그리고 그것은 계속적으로 가고, 나는이 가정 결과는 b 일 수있다. e 히스토그램 그래프에 집계. 나는 38 가지 프로젝트에 3 가지 가능한 위치에 86 개의 이름이 있습니다.

R에서 수행 할 수있는 아이디어가 있습니까? 어떻게 성취 할 수 있었습니까? 사용 가능한 모든 코드 템플릿 또는이 응답에 사용할 수있는 설명서? 이제

, , Role = Participant 

     Group 
Name P1 P2 P3 
    Bill 0 0 1 
    Bob 0 0 0 
    Paul 0 0 0 
    Sue 0 0 1 

, , Role = President 

     Group 
Name P1 P2 P3 
    Bill 0 0 0 
    Bob 0 0 0 
    Paul 1 1 1 
    Sue 0 0 0 

, , Role = Vice President 

     Group 
Name P1 P2 P3 
    Bill 0 0 0 
    Bob 1 1 0 
    Paul 0 0 0 
    Sue 0 0 0 

- 예를 들어 - 프로젝트 "P1은"우리가 바울을 볼 수

## 내 시도 (START)는
Groups <- data.frame (Name=c('Paul','Paul','Paul','Bob','Bob','Sue','Bill'),Group=c('P1','P2','P3','P1','P2','P3','P3'),Role=c('President','President','President','Vice President','Vice President','Participant','Participant')) 
Table <- table (Groups) 

내가 '표'를 인쇄,이 출력을 보여줍니다 대통령과 밥 부통령. 프로젝트 "P2"에서도 같은 일이 발생합니다. "P3"에서, 우리는 대통령으로서의 바울과 수와 빌을 참여자로두고 있습니다.

내 의심은 프로젝트 전체에서 주어진 관계의 발생 횟수를 계산하는 방법입니다. 예 :

기본적으로 특정 인물/역할 조합의 출현을 기준으로 'hist'입니다. 내 시도 ##

(END) 당신이 당신의 Table, 당신은 축의 다른 세트 이상 apply를 사용하여 관계의 다른 유형의 발생을 셀 수있을 이제
+0

예, 가능합니다. 지금까지 뭐 해봤 어? –

+0

안녕하세요 @ ScottRitchie, 답장을 보내 주셔서 감사합니다. 나는 내가 시도한 것을 가지고 질문을 편집했다. –

답변

1

: 다른 유형의

얼마나 많은 발생 참가자들은 각 프로젝트마다 있습니까? 사람-역할 조합의

> apply(Table, c(2,3), sum) 
    Role 
Group Participant President Vice President 
    P1   0   1    1 
    P2   0   1    1 
    P3   2   1    0 

얼마나 많은 사건? 프로젝트

> apply(Table, c(1,3), sum) 
     Role 
Name Participant President Vice President 
    Bill   1   0    0 
    Bob   0   0    2 
    Paul   0   3    0 
    Sue   1   0    0 

가에서 일하는 각 사람입니까?

> apply(Table, c(1,2), sum) 
     Group 
Name P1 P2 P3 
    Bill 0 0 1 
    Bob 1 1 0 
    Paul 1 1 1 
    Sue 0 0 1 

각 사람이 얼마나 많은 프로젝트에 노력하고 있습니다?

> apply(Table, 1, sum) 
Bill Bob Paul Sue 
    1 2 3 1 

각 프로젝트에 얼마나 많은 사람들이 관여?

> apply(Table, 2, sum) 
P1 P2 P3 
2 2 3 

는 얼마나 많은 사람들이 각 역할에 속해? 당신의 팁

> apply(Table, 3, sum) 
    Participant  President Vice President 
      2    3    2 
+0

감사합니다 @ScottRitchie. 이 데이터 세트를 평가하는 데 필요한 몇 가지 주제에 많은 도움이되었습니다. 나는 그와 같은 평가에서 나를 도울 수있는 무언가를 여기에서했다. 댓글 상자의 문자 수는 제한되어 있으므로 몇 분 전에 내가 한 일로 내 자신의 질문에 답변 해 보겠습니다. –

1

감사 @ScottRitchie. 몇 가지 추가 판독 및 테스트 후에 다음과 함께 나왔습니다.

이름, 프로젝트 및 역할이 포함 된 열과 함께 csv 파일을 가져 왔습니다. 마지막에 다른 열도 추가했습니다 (끝에서 끝까지 1의 상수 값을 가짐).

은 내가 그랬어 :

Groupings <-read.csv("~/Documents/TCC_BIGDATA/Test.csv", sep=";") 
Groupings$Counter <- as.integer(Groupings$Counter) 
print(Groupings) 

     Project  Name  Role   Counter 
1  P1   Paul  President  1 
2  P1   Bob  Vice President 1 
3  P1   Sue  Participant  1 
4  P1   Bill  Participant  1 
5  P2   Paul  Vice President 1 
6  P2   Bob  Participant  1 
7  P2   Bill  President  1 
8  P3   Bob  President  1 
9  P3   Bill  Vice President 1 
10  P3   Sue  Participant  1 

는 몇 번이나 이름이 목록에 표시?

aggregate(Counter ~ Name, data = Groupings, sum) 

    Name Counter 
1 Bill  3 
2 Bob  3 
3 Paul  2 
4 Sue  2 

이름 + 역할 조합이 목록에 몇 번 표시됩니까?

aggregate(Counter ~ Name + Role, data = Groupings, sum) 

    Name   Role Counter 
1 Bill Participant  1 
2 Bob Participant  1 
3 Sue Participant  2 
4 Bill  President  1 
5 Bob  President  1 
6 Paul  President  1 
7 Bill Vice President  1 
8 Bob Vice President  1 
9 Paul Vice President  1 

기타 연습 및 조합을 만들 수 있습니다. 결국, 그것은 내 질문에 대답하기 위해 만들어진 것과 똑같은 (@ScottRitchie) 달성하는 또 다른 방법 일뿐입니다. 나는 다른 사람들이 적용 할 수 있도록 나누는 것이 좋은 생각이라고 생각했습니다.