擅长:python、mysql、java
<p>这是一个R解决方案。在</p>
<pre><code>my.data <- merge(df1, df2, by = "ProbeID")
# select rows based on call
zero <- my.data$call == 0
one <- my.data$call == 1
two <- my.data$call == 2
# subset rows based on previous condition and calculate genotype
my.data[zero, "genotype"] <- paste(my.data$alleleA[zero], my.data$alleleA[zero], sep = " ")
my.data[one, "genotype"] <- paste(my.data$alleleA[one], my.data$alleleB[one], sep = " ")
my.data[two, "genotype"] <- paste(my.data$alleleB[two], my.data$alleleB[two], sep = " ")
my.data[, c("ProbeID", "call", "genotype")]
ProbeID call genotype
1 SNP_A-1780270 2 G G
2 SNP_A-1780271 0 C C
3 SNP_A-1780272 2 T T
4 SNP_A-1780274 1 A G
5 SNP_A-1780277 0 C C
6 SNP_A-1780278 2 T T
7 SNP_A-1780283 2 T T
8 SNP_A-1780285 2 C C
9 SNP_A-1780286 0 A A
10 SNP_A-1780287 0 C C
</code></pre>