[R-br] Criando arquivo com dados - Extracão

Paulo Justiniano paulojus em leg.ufpr.br
Quinta Junho 2 12:57:15 BRT 2011


A seleção pode ter critérios multiplos, portanto

dat[dat$V1=="AAA" & dat$V2 == "AAA", ]
vai funcionar

em cima deste fato voce pode usar outras funcoes ou mesmo dentro de um 
loop.
O comando acima é equivalente a

subset(dat, V1 == "AAA" & V2 == "AAA")

um codigo (nao muito otimizado por usar loop duplo...) 
seria:

for (i in levels(dat$V1)){
   for (j in levels(dat$V2)){
     sub <- subset(dat, V1==i & V2 == j)
     sink(paste(i, "-", j, ".txt", sep=T)
     sub
     sink()
}}

ou talvez trocar sink() por write.table

Agora, uma alternativa seria:

by(dat, list(dat$V1, dat$V2), FUN=function(x){ x})

onde em voce escreveria a função para gravar os arquivos

veja a saida do comandop acima para os seguintes dados:

dat <- data.frame(V1 = factor(sample(LETTERS[1:3], 10, rep=T)), V2 = 
factor(sample(letters[1:3], 10, rep=T)), 1:10)





On Thu, 2 Jun 2011, Luciano Ramos Gonçalves wrote:

> Tenho um  arquivo com 11 colunas.
> A coluna 2 (V2) tem aproximadamente 300 levels. O que eu pretendo é separar todo o arquivo conforme esses leveis.
> Ou seja, sendo o level 1 "AAA", eu quero extrair todas as linhas cujo valor na segunda coluna seja "AAA" e gravar em
> um novo arquivo, usando "sink()" por exemplo.
> Como selecionar as linhas conforme o valor do level da segunda coluna?
> 
> Grato,
> 
> Luciano.
> 
>


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