2017-06-22 131 views
0

我想用R我的數據幀的內容匹配它有兩列看起來像:匹配兩列的數據幀 - 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 

我想了兩列進行排序,以便像像火柴和任何非比賽還印

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僅在一側,第二列的某些元素進入了第一個例子 –

回答

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