[R-br] Selecionar variáveis conforme linhas

Roney Fraga Souza roneyfraga em gmail.com
Domingo Agosto 25 13:26:01 BRT 2013


Caros, 

Considerando os dados:

#------------------------------
# Carregar arquivo csv no Dropbox
#install.packages('repmis')
library(repmis)

FinURL <- paste0("https://dl.dropboxusercontent.com/u/61883020/2013-08-25-r-br.csv")

data <- repmis::source_data(FinURL, sep = ",", header = TRUE)

dim(data)
data
#------------------------------
   pessoa pessoa.grupo     g.1     g.2      g.3         g.4     tc
1       a            3                     360     913     1407     674   3354
2       b            2                     235     693      588     384   1900
3       c            4                     355     435      285     524   1599
4       e            3                      37     129      258      80    504
5       f            1                     317      40       14      95    466
6       g            2                      17     216       88      27    348
7       h            2                      53     155       73      59    340
8       i            4                      19      71       99     123    312
9       j            4                     177      19        9      97    302
10      l            2                      82      84       27      74    267
11      m            4                      31      54       23     155    263
12      n            4                      22      53       70     113    258
13      o            4                      37      37       23     153    250
14      p            1                     144      29       49      25    247
15      q            3                       8      49      157      17    231
16      r            2                      27     138       33      27    225
17      s            2                      32      82       25      77    216
18      t            3                      12      16      183       3    214
19      u            4                       0      54       33      90    212
20      v            3                       0       0      135      11    211
#------------------------------

temos a seguinte situação, a pessoa 'a' pertence ao grupo '3', variável 'pessoa.grupo', e se relacionou '360' vezes com pessoas do grupo 1, variável 'g.1', '913'  vezes com pessoas do grupo 2, variável 'g.2', '1407' vezes com pessoas do grupo 3, variável 'g.3', '674' vezes com pessoas do grupo 4, variável 'g.4', tendo por fim se relacionado '3354' vezes no total, variável 'tc'.

Considerando os dados acima estou com a seguintes dúvidas:

1) Como criar uma coluna com o valor da relação de cada pessoa apenas com pessoas de seu grupo de origem?
Exemplo: a pessoa 'e' pertence ao grupo '3', logo, seu valor é referente a variável 'g.3', que é '258'. Já a pessoa 'f', pertence ao grupo '1', seu valor deverá ser referente a 'g.1', '317'.

Em outras palavras, preciso criar uma coluna mantendo o valor de uma das 4 variáveis ('g.1','g.2','g.4' e 'g.4'), respeitando o grupo que a pessoa pertence, que esta na variável 'pessoa.grupo'.

2) Como estabelecer a proporção das ligações de uma pessoa para seu grupo sobre as ligações para os demais grupos?
Exemplo: A pessoa 'b', que pertence ao grupo '2', com o qual vez '693' ligações, variável  'g.2', e suas ligações com pessoas de outros grupos pode ser obtida nas soma das variáveis 'g.1','g.3' e 'g.4'.

3) Por fim, desejo obter a média da quantidade de ligações de uma pessoa considerando o total de grupos que ela tem ligações.
Exemplo: A pessoa 'v', tem ligações apenas com pessoas dos grupos 3 e 4, variáveis 'g.3' e 'g.4', logo a média de duas ligações será ((0+0+135+11)/2). Já a pessoa 'u', tem ligações com pessoas de 3 grupos, então a média seria ((0+54+33+90)/3).


Bem, essas são as dúvidas. Tentei utilizar regex e paste, mas meus conhecimentos básicos não foram suficientes. Minha base completa tem 16 categorias, 'g.1' a 'g.16', e 4000 linhas. 

Desde já grato pela atenção.
Roney


Mais detalhes sobre a lista de discussão R-br