У меня есть кадр данных 100 на 100, который содержит 100 образцов идентификаторов для 100 SNP в геноме в следующем формате.
structure(list(`c("12545=1", "12545=0")` = c("12545=1|1", "12545=0|0"
), `c("12994=0|0", "12994=0|1")` = c("12994=0|0", "12994=0|1"
), `c("15240=0|0", "15240=1|1")` = c("15240=0|0", "15240=1|1"
)), row.names = c(NA, -2L), class = c("tbl_df", "tbl", "data.frame"
))
Целые числа по обе стороны от |
представляют генотип каждого человека. Я ищу решение в bash или R, потенциально использующее регулярное выражение, которое создает два новых фрейма данных, каждый из которых имеет те же измерения, что и первый. Один кадр данных, содержащий только информацию об эталонном аллеле для каждого образца в каждом локусе, поэтому содержит только целочисленное значение перед |
, а второй кадр данных, содержащий информацию о альтернативном аллеле в каждом локусе, т.е. только значение целого числа после |
в каждой клетке. Таким образом, будут сгенерированы два новых кадра данных размером 100 x 100 с единицами и нулями.
Все, что находится до =
, можно игнорировать.
Любой совет о том, как решить эту проблему, будет принят с благодарностью.