У меня есть два следующих кадра данных (упрощенный для вопроса):
nsPre (меньший кадр данных):
gene_id_name
ENSG00000005020|SKAP2
ENSG00000017260|ATP2C1
ENSG00000027869|SH2D2A
ENSG00000039319|ZFYVE16
.
.
.
g0 (больший размер данных):
gene_id_name pLI g_eGenes_general
ENSG00000005020|SKAP2 0.00823 0
ENSG00000039319|ZFYVE16 0.12104 0
ENSG00000087884|AAMDC 0.13539 1
ENSG00000027869|SH2D2A 0.002489 1
ENSG00000124608|AARS2 0.32500 0
.
.
.
Я пытаюсь создать в g0
новый столбец с именем g_eGenes_nsPre
, который присваивает значение 1
при совпадении значений gene_id_name
, изначение 0
, когда они этого не делают, как показано ниже:
Желаемый результат:
gene_id_name pLI g_eGenes_general g_eGenes_nsPre
ENSG00000005020|SKAP2 0.00823 0 1
ENSG00000039319|ZFYVE16 0.12104 0 1
ENSG00000087884|AAMDC 0.13539 1 0
ENSG00000027869|SH2D2A 0.002489 1 1
ENSG00000124608|AARS2 0.32500 0 0
Текущая попытка:
df = g0
df <- na.omit(df)
df$g_eGenes_nsPre <- ifelse(nsPre$gene_id_name %in% g0$gene_id_name, 1, 0)
df$g_eGenes_nsPost <- ifelse(nsPost$gene_id_name %in% g0$gene_id_name, 1, 0)
Ошибка при работе над кодом:
Error in `$<-.data.frame`(`*tmp*`, g_eGenes_nsPre, value = c(1, 1, 1, :
replacement has 2039 rows, data has 15430