2017-06-22 14 views
0

を、私はそれがどのように見える二つの列がある私のデータフレームの内容を一致させるためにRを使用したい:データフレームに2つの列をマッチング - R

1B-73066 1C-80140 
1B-73068 1C-80154 
1B-73070 1D-21647 
1B-73076 1D-21648 
1C-1095 1B-73066 
1C-1096 1B-73068 
1C-14080 1B-73070 
1C-1582 1B-73076 

を、私はそうのような試合のように2つの列をソートします、および任意の不一致も印刷されて、私はあなたの例で混乱しているものの

1B-73066 1B-73066 
1B-73068 1B-73068 
1B-73070 1B-73070 
1B-73076 1B-73076 
1C-1095 1C-1095 
1C-80140 
1C-80154 

おかげ

+0

1c-1095は片側だけで、2番目の列のいくつかの要素があなたの例で最初に入っています –

答えて

0

これは、あなたが求めるものを行うようだ:

df <- read.table(text="1B-73066 1C-80140 
+ 1B-73068 1C-80154 
+ 1B-73070 1D-21647 
+ 1B-73076 1D-21648 
+ 1C-1095 1B-73066 
+ 1C-1096 1B-73068 
+ 1C-14080 1B-73070 
+ 1C-1582 1B-73076",stringsAsFactors = FALSE) 
> 
> names(df) <- c("A","B") 
> df2 <- data.frame(
+ A = c(intersect(df$A,df$B),setdiff(df$A,df$B),rep("",length(setdiff(df$B,df$A)))), 
+ B = c(intersect(df$A,df$B),rep("",length(setdiff(df$A,df$B))),setdiff(df$B,df$A))) 

# > df2 
# A  B 
# 1 1B-73066 1B-73066 
# 2 1B-73068 1B-73068 
# 3 1B-73070 1B-73070 
# 4 1B-73076 1B-73076 
# 5 1C-1095   
# 6 1C-1096   
# 7 1C-14080   
# 8 1C-1582   
# 9   1C-80140 
# 10   1C-80154 
# 11   1D-21647 
# 12   1D-21648 
関連する問題