2016-10-17 13 views
0

でNAを追加するさまざまな長さで...私はSOFで解決策を見つけることを試みたが、私は何も見つかりませんでした空の行

を列を比較し、マージ私はこの種の2つのデータフレームを持っていますデータ。

> df 
     1 |UNIMOD:730 
     2 |UNIMOD:4 
     3 |UNIMOD:214 
     4 |UNIMOD:21 
     5 |UNIMOD:35 
       . 
       . 
       . 
      n+1500 

そして、これと別の1:

> df2 
      1 |UNIMOD:730 
      2 |UNIMOD:4 
      3 |UNIMOD:21 
      4 |UNIMOD:35 
        . 
        . 
        . 
       n+500 

私は何を持っていると思いますが値を比較すると、列をマージし、値が存在しない場合、NAを追加し、出力のこの種であり、 。繰り返される値はありません。

> df 
     1 |UNIMOD:730 | UNIMOD:730 
     2 |UNIMOD:4 | UNIMOD:4 
     3 |UNIMOD:214 | NA 
     4 |UNIMOD:21 | UNIMOD:21 
     5 |UNIMOD:35 | UNIMOD:35 
       .   . 
       .   . 
       .   .    
      n+1500  n+1500 

私はオプションmergeで試してみましたが、この機能はただ1列にすべての私のデータをマージし、これを使用する場合:

left_join(df, df2, c("sequence"="sequence")) 

私はちょうど同じ結果を得ます。

df <- data.frame(modifications=c("null", "0-UNIMOD:214", "2-UNIMOD:3","12-UNIMOD:24","1-UNIMOD:44","0-UNIMOD:12", "0-UNIMOD:123", "13-UNIMOD:212")) 

df2 <- data.frame(modifications=c("null", "0-UNIMOD:24", "2-UNIMOD:3","12-UNIMOD:24","1-UNIMOD:44","0-UNIMOD:12")) 
+1

data.frameに1列以上あるとします。それはあなたが必要とするものではありませんが、仕事をするかもしれません。 'merge(df、df2、by =" modifications "、すべて=真)です。 – DJJ

+0

これを見てください:http://stackoverflow.com/questions/14812162/joining-the-data-in-two-columns-into-one-column-in-r – Xizam

+0

@DJJはい、10列。私はあなたの例を試して、プログラムがクラッシュします。おそらく私は本当に大きなデータフレームで作業しているからでしょう。 – Enrique

答えて

1

これは(?matchを使用して、唯一のベースR)あなたが後にしているものです:ここで

あなたが再現可能な例がありますか?

# Your data with added two columns 
df1 <- cbind.data.frame(modifications=c("null", "0-UNIMOD:214", "2-UNIMOD:3","12-UNIMOD:24","1-UNIMOD:44","0-UNIMOD:12", "0-UNIMOD:123", "13-UNIMOD:212"), 
      df1col2 = "something", 
      df1col3 = "val1"); 

df2 <- cbind.data.frame(modifications=c("null", "0-UNIMOD:24", "2-UNIMOD:3","12-UNIMOD:24","1-UNIMOD:44","0-UNIMOD:12"), 
      df2col2 = "anotherthing", 
      df2col3 = "val2"); 


# Merge df1 and merge2 
df <- cbind.data.frame(df1, df2[match(df1$modifications, df2$modifications), ]); 
    modifications df1col2 df1col3 modifications  df2col2 df2col3 
1    null something val1   null anotherthing val2 
NA 0-UNIMOD:214 something val1   <NA>   <NA> <NA> 
3  2-UNIMOD:3 something val1 2-UNIMOD:3 anotherthing val2 
4  12-UNIMOD:24 something val1 12-UNIMOD:24 anotherthing val2 
5  1-UNIMOD:44 something val1 1-UNIMOD:44 anotherthing val2 
6  0-UNIMOD:12 something val1 0-UNIMOD:12 anotherthing val2 
NA.1 0-UNIMOD:123 something val1   <NA>   <NA> <NA> 
NA.2 13-UNIMOD:212 something val1   <NA>   <NA> <NA> 

# Or merge and remove the duplicate modifcations column (if necessary) 
df <- cbind.data.frame(df1, df2[match(df1$modifications, df2$modifications), -1]); 
print(df); 
    modifications df1col2 df1col3  df2col2 df2col3 
1    null something val1 anotherthing val2 
NA 0-UNIMOD:214 something val1   <NA> <NA> 
3  2-UNIMOD:3 something val1 anotherthing val2 
4  12-UNIMOD:24 something val1 anotherthing val2 
5  1-UNIMOD:44 something val1 anotherthing val2 
6  0-UNIMOD:12 something val1 anotherthing val2 
NA.1 0-UNIMOD:123 something val1   <NA> <NA> 
NA.2 13-UNIMOD:212 something val1   <NA> <NA> 
関連する問題