У меня есть следующая проблема, я могу решить:
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
Я хочу разбить две буквы на разные столбцы, а затем упорядочить по алфавиту.
Редактировать :Порядок может быть выполнен до разделения, например, значение var1a "TA" var1a должно быть "AT" или после разделения, так что var1aa должно быть "A", а var1ab должно быть "T" (вместо "T", "А" ). поэтому сортировка внутри каждой ячейки.
split_col <- function(.col, data){
.x <- colsplit( data[[.col]], names = paste0(.col, letters[1:2]))
}
разделить каждый столбец и объединить
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
Но нерешенная часть заключается в том, что я хочу заказать пару столбцов так, чтобы имя столбца «a» и имя столбца «b» были упорядочены в алфавитном порядке. Таким образом, ожидаемый результат:
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
Может, как можно упорядочить (с каждой парой переменных )?