Digamos uma tabela da seguinte maneira:
ID sp1 sp2 sp3 C1 1 3 2 C1 3 2 0 C1 2 1 1 C2 2 4 0 C2 1 3 1 C3 0 3 4 C3 2 1 2
#! /usr/bin/R
> dados = read.table('dados.txt', header=T)
> dados
ID sp1 sp2 sp3
1 C1 1 3 2
2 C1 3 2 0
3 C1 2 1 1
4 C2 2 4 0
5 C2 1 3 1
6 C3 0 3 4
7 C3 2 1 2
> attach(dados)
# transformando a coluna ID em fator.
> dados$ID <- data-blogger-escaped-colunas="" data-blogger-escaped-dados.="" data-blogger-escaped-dados="" data-blogger-escaped-das="" data-blogger-escaped-de="" data-blogger-escaped-factor="" data-blogger-escaped-uma="" data-blogger-escaped-ver=""> dados$sp1
[1] 1 3 2 2 1 0 2
# para fazer uma média, por exemplo, utilizando o fator ID.
> xsp1 <- data-blogger-escaped-mean="" data-blogger-escaped-sp1="" data-blogger-escaped-tapply="" id=""> xsp1
C1 C2 C3
2.0 1.5 1.0
Para fazer isso em Python, você poderia usar o numpy, simplesmente, ou usar as elegantes ferramentas do "pandas". Para quem vem do R, o Pandas é uma forma fácil de se entender com dados tabelados e cheios de fatores.
>>> import pandas as pd
>>> dados = pd.read_table('dados.txt',sep=" ")
>>> dados
ID sp1 sp2 sp3
0 C1 1 3 2
1 C1 3 2 0
2 C1 2 1 1
3 C2 2 4 0
4 C2 1 3 1
5 C3 0 3 4
6 C3 2 1 2
# Acessar somente uma das colunas.
>>> dados['sp1']
0 1
1 3
2 2
3 2
4 1
5 0
6 2
Name: sp1
# Para fazer a média, com a função groupby
>>> dados.groupby('ID').sp1.mean()
ID
C1 2.0
C2 1.5
C3 1.0
Name: sp1
# Ainda é possível fazer várias coisas com o objeto dados (que agora é um DataFrame).
# Por exemplo, pegar a média e a variância, ordenados por ID.
>>> dados.groupby('ID').sp1.agg(['mean', 'var'])
mean var
ID
C1 2.0 1.0
C2 1.5 0.5
C3 1.0 2.0
Até mais.
[1] http://pandas.pydata.org/
Nenhum comentário:
Postar um comentário