У меня есть таблица, которая выглядит следующим образом:
> dt
variant_id transcript_id is_NL individual counts
1: chr1_10007059_A_G_b38 chr1_10033695_10072027 0 GTEX-111FC 44
2: chr1_10007059_A_G_b38 chr1_10033695_10072027 0 GTEX-111VG 32
3: chr1_10007059_A_G_b38 chr1_10033695_10072027 0 GTEX-1122O 34
4: chr1_10007059_A_G_b38 chr1_10033695_10072027 0 GTEX-113IC 17
5: chr1_10007059_A_G_b38 chr1_10033695_10072027 0 GTEX-113JC 37
---
159899076: chr9_92815645_A_C_b38 chr9_92535983_92536600 1 GTEX-X4XX 1
159899077: chr9_92815645_A_C_b38 chr9_92535983_92536600 1 GTEX-XBEW 3
159899078: chr9_92815645_A_C_b38 chr9_92535983_92536600 1 GTEX-Y5V6 0
159899079: chr9_92815645_A_C_b38 chr9_92535983_92536600 1 GTEX-YEC4 0
159899080: chr9_92815645_A_C_b38 chr9_92535983_92536600 1 GTEX-ZYY3 0
Существует ~ 600 уникальных individual
с, и каждая variant_id
и transcript_id
пара присутствует в каждый человек (по крайней мере, в таблице, количество может быть 0).
Что я хочу сделать для каждой пары variant_id
и transcript_id
, найти количество экземпляров, где counts == 0
и counts > 0
за каждый is_NL == 0, 1, 2
.
Ниже приведен макет таблицы (0 == HH
, 1 == HN
, 2 == NN
)
variant_id transcript_id HH=0 HH>0 HN=0 HN>0 NN=0 NN>0
a b 2 1146 3571 3312 741 280
...
et c. Я надеюсь, что это имеет смысл.
Для дальнейшего описания каждая строка представляет count
из transcript
, обнаруженных в каждом individual
, учитывая вариант сращивания в variant_id
. is_NL
представляет генотип человека, где 0 означает гомозиготный по аллелю человека, 2 означает гомозиготный по аллелю неандертальца, а 1 означает гетерозиготный.
structure(list(variant_id = c("chr1_10007059_A_G_b38", "chr1_10007059_A_G_b38",
"chr1_10007059_A_G_b38", "chr1_10007059_A_G_b38", "chr1_10007059_A_G_b38",
"chr1_10007059_A_G_b38"), transcript_id = c("chr1_10033695_10072027",
"chr1_10033695_10072027", "chr1_10033695_10072027", "chr1_10033695_10072027",
"chr1_10033695_10072027", "chr1_10033695_10072027"), is_NL = c(0L,
0L, 0L, 0L, 0L, 0L), individual = c("GTEX-111FC", "GTEX-111VG",
"GTEX-1122O", "GTEX-113IC", "GTEX-113JC", "GTEX-117XS"), counts = c(44L,
32L, 34L, 17L, 37L, 32L), nrows = c(1L, 1L, 1L, 1L, 1L, 1L)), row.names = c(NA,
6L), class = "data.frame")