Transpor dados na linha particular w python, r, sql?

0

Digamos que eu tenha os seguintes dados (cerca de 50k de linhas no exemplo real)

A
B
C
D
E
X
A
B
C
D
E
F
G
H
X

E eu quero que pareça

A,B,C,D,E,X

A,B,C,D,E,F,G,H,X

Então, tecnicamente, quero transpor dados, mas cortar em uma determinada linha.

Como isso pode ser feito no Excel, R, SQL ou Python?

    
por Velletti 20.01.2014 / 04:23

1 resposta

1

Usando R, aqui estão algumas respostas possíveis com pequenas diferenças, já que não sei exatamente o que você quer

# Just a step to read in an extended version of your sample data

dat <- as.matrix(read.table(text=
"A
B
C
D
E
A
B
C
D
E
F
A
B
C
D
E
F
G
H
A
B
C
D
E
F"))

Esta é uma maneira de fazer a divisão. Você poderia criar um índice para dividir os grupos. Em seguida, divida as linhas com base nos agrupamentos.

splitgrp <- cumsum(ave(dat=="A", dat)) # group index
splitlist <-split(dat,splitgrp) # if you want a list

Você pode fazer essa lista em diferentes tipos de objetos, se quiser, assim:

vecofstrings <- sapply(splitlist,paste0,collapse="") # if you want a vector
df <- data.frame(vecofstrings) # if you want a data frame
mat <- matrix(vecofstrings) # if you want a matrix

Finalmente, aqui estão algumas maneiras de salvar esses objetos:

write.table(mat,"mat.csv")
write.table(mat,"mat.csv", quote=F, row.names=F)

# Here are a few ways to save a data frame.
write.table(df,"df.txt")
write.table(df,"df.txt", quote=F)  # no quotes in the saved file
write.table(df,"df.txt", row.names=F)  # no row names in the saved file
write.table(df,"df.txt", row.names=F, col.names=F)  # no row or column names in the saved file
write.table(df,"df.txt",row.names=F, col.names=F, quote=F)  # no row or columns names and no quotes in the saved file
    
por 11.02.2014 / 09:01