Я работаю с большим набором генетических данных. У каждого уникального «гена» есть «цепочки», то есть группы, которые мне нужно подсчитать. Однако я также хотел бы сократить столбец «gene» на более общие c группы, но сохранить категорию «chain» и объединить «count».
Я запустил следующее, чтобы изначально уменьшить данные:
df1 <- huge_dataset %>%
dplyr::group_by(gene) %>%
dplyr::count(chain, name="count")
, которые можно воспроизвести следующим образом:
df1 <- data.frame("gene"= c("IGHA1", "IGHA1", "IGHA2","IGHA2", "IGHG1", "IGHG1", "IGHG2", "IGHG2"),
"chain"= c("IGK", "IGL","IGK", "IGL","IGK", "IGL", "IGK", "IGL"),
"count" = c(30, 12, 18, 19, 57, 109, 62, 34))
Затем я хочу объединить записи в столбце «ген» по уникальности четвертой буквы, используя регулярное выражение (т.е. регулярное выражение - «IGH.») каждого гена, и объединить столбцы «count», но также сохранить категоризацию по столбцу «chain». В результате этого преобразования из df1:
df2 <- data.frame("gene"= c("IGHA", "IGHA", "IGHG", "IGHG"),
"chain"= c("IGK", "IGL","IGK", "IGL"),
"count" = c(48, 31, 119, 143))
Есть ли аккуратное / элегантное решение для
- Замените мой исходный оператор group_by () с помощью регулярного выражения или
- Уменьшить df1 до df2?
Я должен в конечном итоге векторизовать оператор для нескольких различных итераций гена, поэтому я бы не стал индивидуально проверять выражение для каждого отдельного гена отдельно