1

私には次の難問があります。次のようなデータフレームxがあります。

     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

そして、データ名声y:

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

行名に一致し、ギャップをゼロで埋める値を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

NAを入力する必要がある場合は、これを実行して、後で新しいyベクトル内でNAをゼロに変更できます。

私は使用rbind.fillからのバリエーションを試してきましたが、私が達成していることは、私が望む方法でうまくいくことではありません。plyrnewDF<-do.call(rbind.fill)

EDIT i GOT IT TO GIVE NAS USING merge(x,y,all=TRUE,by='row.names')

4

2 に答える 2

2

私はそのようにします:

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

次に、NAを0に置き換えます。

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

ただし、y / xデータフレームにNAがある場合、これは失敗するか、間違った結果を生成します。

于 2012-04-11T12:24:53.703 に答える
0

たった1つの列の場合、これは別のアプローチですが、おそらく最良のアプローチではありませんが、代替手段です。

x$value <- ifelse(rownames(x) %in% rownames(y), y$value, 0)
于 2012-04-11T13:16:05.737 に答える