Criando arquivo com dados - Extracão

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.

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.

Funcionou. Eu estava comandando corretamente. O problema era no valor procurado. Obrigado pela ajuda a você e ao Ivan Allaman. Luciano. Em 6/2/2011 12:57 PM, Paulo Justiniano escreveu:
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.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Dê uma olhada na função split() também. À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ========================================================================== 2011/6/2 Luciano Ramos Gonçalves <lrg.financas@gmail.com>
Funcionou. Eu estava comandando corretamente. O problema era no valor procurado. Obrigado pela ajuda a você e ao Ivan Allaman.
Luciano.
Em 6/2/2011 12:57 PM, Paulo Justiniano escreveu:
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.
_______________________________________________ R-br mailing listR-br@listas.c3sl.ufpr.brhttps://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Tentando criar os arquivos .txt esbarrei em um problema: for (i in levels(testes$V2)){ sub <-subset(testes,V2==i) sink(paste("01","-",i, ".txt", sep=" ")) sub sink() } No código acima, os arquivos .txt são criados, mas todos ficam vazios. Porque será? Luciano. Em 6/2/2011 12:57 PM, Paulo Justiniano escreveu:
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.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Luciano no meu exemplo faltou o print() na penultima linha voce precisa fazer: print(sub) On Fri, 3 Jun 2011, Luciano Ramos Gonçalves wrote:
Tentando criar os arquivos .txt esbarrei em um problema:
for (i in levels(testes$V2)){ sub <-subset(testes,V2==i) sink(paste("01","-",i, ".txt", sep=" ")) sub sink() }
No código acima, os arquivos .txt são criados, mas todos ficam vazios. Porque será?
Luciano.
Em 6/2/2011 12:57 PM, Paulo Justiniano escreveu: 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.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Obrigado pela resposta, Já havia descoberto o problema. No fim achei que usando write.table ficou melhor. Em 6/6/2011 3:37 PM, Paulo Justiniano escreveu:
Luciano
no meu exemplo faltou o print()
na penultima linha voce precisa fazer:
print(sub)
On Fri, 3 Jun 2011, Luciano Ramos Gonçalves wrote:
Tentando criar os arquivos .txt esbarrei em um problema:
for (i in levels(testes$V2)){ sub <-subset(testes,V2==i) sink(paste("01","-",i, ".txt", sep=" ")) sub sink() }
No código acima, os arquivos .txt são criados, mas todos ficam vazios. Porque será?
Luciano.
Em 6/2/2011 12:57 PM, Paulo Justiniano escreveu: 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.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Dá uma olhada no exemplo abaixo. Poder ser que ajude. C1=sample(5000); C1=sample(C1,300); C1=sort(C1) C2=as.factor(c(rep("A",100),rep("B",100),rep("C",100))) C3=sample(50000); C3=sample(C3,300); C3=sort(C3) x=data.frame(C1,C2,C3) attach(x) s=subset(x, C2== "A") s s1=subset(x, select=c(C1,C2)) s1 s2=subset(x, C3>49000) s2 s3=subset(x, C3<2000) s3 --- Em qui, 2/6/11, Luciano Ramos Gonçalves <lrg.financas@gmail.com> escreveu: De: Luciano Ramos Gonçalves <lrg.financas@gmail.com> Assunto: [R-br] Criando arquivo com dados - Extracão Para: r-br@listas.c3sl.ufpr.br Data: Quinta-feira, 2 de Junho de 2011, 15:25 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. -----Anexo incorporado----- _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
participantes (4)
-
Emmanuel Arnhold
-
Luciano Ramos Gonçalves
-
Paulo Justiniano
-
Walmes Zeviani