私は次の2つのデータフレームを持っています(質問のために簡略化されています):
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
calledg_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
ベースRで
transform(g0, g_eGenes_nsPre = apply(g0, 1, function(x)
as.integer(x["gene_id_name"] %in% nsPre$gene_id_name)))
# gene_id_name pLI g_eGenes_general g_eGenes_nsPre
#1 ENSG00000005020|SKAP2 0.008230 0 1
#2 ENSG00000039319|ZFYVE16 0.121040 0 1
#3 ENSG00000087884|AAMDC 0.135390 1 0
#4 ENSG00000027869|SH2D2A 0.002489 1 1
#5 ENSG00000124608|AARS2 0.325000 0 0
Instradas.integer
あなたも単項使用できる+
演算子を。
またはを使用して dplyr
library(dplyr)
g0 %>%
mutate(g_eGenes_nsPre = +(gene_id_name %in% nsPre$gene_id_name))
# gene_id_name pLI g_eGenes_general g_eGenes_nsPre
#1 ENSG00000005020|SKAP2 0.008230 0 1
#2 ENSG00000039319|ZFYVE16 0.121040 0 1
#3 ENSG00000087884|AAMDC 0.135390 1 0
#4 ENSG00000027869|SH2D2A 0.002489 1 1
#5 ENSG00000124608|AARS2 0.325000 0 0
またはを使用して data.table
library(data.table)
setDT(g0)[, g_eGenes_nsPre := +(gene_id_name %in% nsPre$gene_id_name)]
nsPre <- read.table(text =
"gene_id_name
ENSG00000005020|SKAP2
ENSG00000017260|ATP2C1
ENSG00000027869|SH2D2A
ENSG00000039319|ZFYVE16", header = T)
g0 <- read.table(text =
"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", header = T)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加