Допустим, у меня есть следующие данные (около 50 тыс. Строк в реальном примере)

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

И я хочу это посмотреть

А, В, С, D, Е, Х

А, В, С, D, Е, F, G, Н, Х

Так что технически я хочу транспонировать данные, но вырезать их в определенной строке.

Как это может быть достигнуто в Excel, R, SQL или Python?

1 ответ1

1

Используя R, вот несколько возможных ответов с небольшими отличиями, так как я не уверен, что именно вы хотите

# 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"))

Это один из способов разделить. Вы можете сделать индекс, по которому можно разделить группы. Затем разделите линии на основе группировок.

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

Затем вы можете сделать этот список различными объектами, если хотите, например:

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

Наконец, вот несколько способов сохранить эти объекты:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .