2012-04-11 4 views
1

私は以下のような難点があります。私はrownamesに一致し、zeros.ieでギャップを埋めるxに値を追加したいrownamesによってベクトルとデータフレームを結合する0で空白を埋めよう

 value   
11 99    
13 88  #where 11,13,14 are row names 
14 33 

 v2  v3  
10 4.0  3.0 
11 5.0  3.0 
12 6.0  9.0 
13 5.0  6.0 # where 10-14 are rownames 
14 3.0  6.0 

、次いでdatafameのY:

Iは次のように見えるデータフレームxを有します
 v2  v3 value 
10 4.0  3.0  0 
11 5.0  3.0  99 
12 6.0  9.0  0 
13 5.0  6.0  88 
14 3.0  6.0  33 

私は、NASに入力する必要があれば多分私はこれを行うことができ、その後、その後、新しいyのベクトル内のゼロにNASに変更が。

rbind.fillのバリエーションをを使用してplyrから試していますが、達成することは何も私が望む方法ではありません。

y$row <- rownames(y) # add a 'helper' column for the merge function. 
x$row <- rownames(x) 
n <-merge(x,y, by='row', all=T) 
n <- n[,-1] # remove the 'helper' column 

をして、0でNASに置き換えます:

EDIT は、私はそのようにそれを行うだろうITが merge(x,y,all=TRUE,by='row.names')

+0

はhttp://stackoverflow.com/questions/4022046/how-to-merge-onこれを行います-a-rowname-by-some-column-from-another-data-frameヘルプ? – johannes

答えて

2

を使用してNASを与えることGOT

n[is.na(n$value),]$value = 0 

しかし、このあなたのy/xデータフレームにNAsがある場合、失敗するか、間違った結果を出すでしょう。

+0

おかげさまで、あなたが投稿する直前にマージ関数を見つけましたが、ゼロを置き換えることに非常に感謝しています。それはしばらく時間がかかりました。 – user1322296

0

それだけで一つの列だ場合、これは1最善のが、代替可能性はないが、別のアプローチである:

x$value <- ifelse(rownames(x) %in% rownames(y), y$value, 0) 
関連する問題