He problema siguiente, pude resolver:orden mientras división (. Ej TA debe dividirse a dos columnas "A" en la primera "T" segundo) en r
set.seed (1234)
mydf <- data.frame (var1a = sample (c("TA", "AA", "TT"), 5, replace = TRUE),
varb2 = sample (c("GA", "AA", "GG"), 5, replace = TRUE),
varAB = sample (c("AC", "AA", "CC"), 5, replace = TRUE)
)
mydf
var1a varb2 varAB
1 TA AA CC
2 AA GA AA
3 AA GA AC
4 AA AA CC
5 TT AA AC
que quieren dividir dos letras en una columna diferente, y luego ordenar alfabéticamente. Editar: El pedido se puede hacer antes de la división, por ejemplo var1a , "UN"). por lo que la clasificación está dentro de cada celda.
split_col <- function(.col, data){
.x <- colsplit(data[[.col]], names = paste0(.col, letters[1:2]))
}
dividida cada columna y combinar
require(reshape)
splitdf <- do.call(cbind, lapply(names(mydf), split_col, data = mydf))
var1aa var1ab varb2a varb2b varABa varABb
1 T A A A C C
2 A A G A A A
3 A A G A A C
4 A A A A C C
5 T T A A A C
Pero la parte sin resolver es que quiero pedir el par de columnas de tal manera que nombrecolumna "a" y columname "b" se ordenan por orden alfabético. Por lo tanto, la salida esperada:
var1aa var1ab varb2a varb2b varABa varABb
1 A T A A C C
2 A A A G A A
3 A A A G A C
4 A A A A C C
5 T T A A A C
¿Cómo se puede pedir (corto con cada par de variables)?
¿Quiere decir que cada fila de cada par de columnas debe ser ordenada alfabéticamente? Si ese es el caso, debe agregar esa declaración a su pregunta porque no está muy claro. – joran
La pregunta tal como está es incoherente. El marco de datos creado por el código no coincide con el ejemplo que usted ofrece. Solo hay 2 'T' en los datos del código. Además, la naturaleza de la operación "ordenar alfabéticamente" no está clara. ¿Desea ordenar por la primera columna en orden reverese –
Su función 'split_col' me da un error:' Error en is.character (patrón): 'patrón' falta' –