2017-01-10 18 views
-1

私は偽陰性および偽陽性の呼び出しを含む文字列を含む2つの列を持つdfを持っています。私は2つの列を比較し、 "FN"と "FP"であるものを識別し、列がクエリの仕様を満たしているかどうかを示す "タグ"で3番目の列を作成したいと思います。例えば文字列と列の2つの列を比較する "TRUE"または "FALSE"

ここで私は、結果の出力が

x1   x2    x3 
1/2:FN:am .:.:.   False 
1|1:FN:am 0/1:FP:am  True 
.:.:.  1|0:559.511:FP False 

おかげようにしたいと思いDF

x1   x2 
1/2:FN:am .:.:. 
1|1:FN:am 0/1:FP:am 
.:.:.  1|0:559.511:FP 

の一枚です!

+1

私は答えは、あなたが検索していると思います(これはX1とX2におけるX2でFN)またはX1中(FN及びFP)のパターンのいずれか(FPをキャプチャ) forはここで説明されています:http://stackoverflow.com/a/10152029/7019856 – gima

+0

@gimaこれがどのように当てはまるのか分かりません。この回答に入る列間の比較はありません。 –

答えて

3

これで必要なものはありますか?また、これは動作します

df <- data.frame(x1=c("1:FN:AM","1.2:FN:AM","3"),x2=c("1:AM","1.2:FP:AM","3"),stringsAsFactors = FALSE) 
     x1  x2 
1 1:FN:AM  1:AM 
2 1.2:FN:AM 1.2:FP:AM 
3   3   3 

df$x3 <- sapply(df$x1,grepl,pattern = "FN") & sapply(df$x2,grepl,pattern = "FP") 
     x1  x2 x3 
1 1:FN:AM  1:AM FALSE 
2 1.2:FN:AM 1.2:FP:AM TRUE 
3   3   3 FALSE 
+0

ありがとう!なぜ人々が質問を気にしなかったのか分かりませんが、あなたの答えは完璧でした。 –

1

df <- read.table(text='x1   x2 
       1/2:FN:am .:.:. 
       1|1:FN:am 0/1:FP:am 
       1|0:55:FP 0/2:FN:am 
       .:.:.  1|0:559.511:FP', header=TRUE, stringsAsFactors=FALSE) 
df$x3 <- grepl('.*FN.*FP.*|.*FP.*FN.*', paste(df$x1, df$x2)) 
df 
#   x1    x2 x3 
#1 1/2:FN:am   .:.:. FALSE 
#2 1|1:FN:am  0/1:FP:am TRUE 
#3 1|0:55:FP  0/2:FN:am TRUE 
#4  .:.:. 1|0:559.511:FP FALSE 
関連する問題