2015-12-15 1 views
5

dd2というデータフレームがあります。私はLeft.Gene.SymbolsRight.Gene.Symbolsに値を貼り付ける必要がありますが、これは単に以下のコードを使用するだけですが、欠損値がある場合は貼り付けをしたくありません。 resultのように、combinationの列のように見せてください。2つの列の値を貼り付ける際にNA値を省略します。

mycode

#to remove NAs 
dd2[dd2 == 'NA'] <- NA 
#pasting values together 
result <- cbind(dd2,combination = paste(dd2[,"Left.Gene.Symbols"],dd2[,"Right.Gene.Symbols"],sep="*")) 

データ

dd2<- structure(c("AMLM12001KP", "AMLM12001KP", "AMLM12001KP", "AMLM12001KP", 
"AMLM12001KP", "AK2", "HFM1", "HFM1", "HFM1", "HFM1", NA, "PPT", 
NA, "GGT", NA), .Dim = c(5L, 3L), .Dimnames = list(NULL, c("customer_sample_id", 
"Left.Gene.Symbols", "Right.Gene.Symbols"))) 

結果

customer_sample_id Left.Gene.Symbols Right.Gene.Symbols combination 
[1,] "AMLM12001KP"  "AK2"    NA     AK2* 
[2,] "AMLM12001KP"  "HFM1"   "PPT"     HFM1*PPT 
[3,] "AMLM12001KP"  "HFM1"   NA     HFM1* 
[4,] "AMLM12001KP"  "HFM1"   "GGT"     HFM1*GGT 
[5,] "AMLM12001KP"  "HFM1"   NA     HFM1* 
+1

qdapからNAerを使用することができます。 – MAPK

答えて

3

NAの値を一時的に空の文字の""に置き換えて、このようなことを行うことができます。

cbind(
    dd2, 
    combination = paste(dd2[,2], replace(dd2[,3], is.na(dd2[,3]), ""), sep = "*") 
) 
#  customer_sample_id Left.Gene.Symbols Right.Gene.Symbols combinations 
# [1,] "AMLM12001KP"  "AK2"    NA     "AK2*"  
# [2,] "AMLM12001KP"  "HFM1"   "PPT"    "HFM1*PPT" 
# [3,] "AMLM12001KP"  "HFM1"   NA     "HFM1*"  
# [4,] "AMLM12001KP"  "HFM1"   "GGT"    "HFM1*GGT" 
# [5,] "AMLM12001KP"  "HFM1"   NA     "HFM1*"  

もちろん、上記の列番号を列名に置き換えてください。彼らが長すぎるので、私はそれらを書いていませんでした。

+0

更新しました。もし2列目にもNAsがあれば、replace(dd2 [、2]、is.na(dd2 [、2])を使うことはできますか? – MAPK

+1

@MAPK - あなたが望むなら、それは行列全体に対して行うことができます。 '' replace(dd2、is.na(dd2)、 "") –

2

つの方法ifelse

ifelse(is.na(dd2[,3]),paste0(dd2[,2],"*"),paste(dd2[,2],dd2[,3],sep="*")) 

#[1] "AK2*"  "HFM1*PPT" "HFM1*" "HFM1*GGT" "HFM1*" 
+0

遺伝子名の中には名前にNAのフランキングが含まれているため、ここではsubを使用できません。 MPNA、TTNAなど、NA部分を取り除くなど? – MAPK

+1

@MAPKは答えを –

2

私達はちょうどそれを修正し申し訳@RonakShah sprintf

library(qdap) 
sprintf('%s*%s', dd2[,2],NAer(dd2[,3],'')) 
#[1] "AK2*"  "HFM1*PPT" "HFM1*" "HFM1*GGT" "HFM1*" 
関連する問題