通过用零填充空白的rownames将向量组合到数据框

时间:2012-04-11 12:11:36

标签: r vector

我有以下难题。我的数据框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

然后是datafame y:

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

我想为x匹配rownames增加值,并用zeros.i.e填充空白。:

      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的{​​{1}}变体,但我所取得的成就并非如此。

EDIT 我准备给NAS使用 newDF<-do.call(rbind.fill)

2 个答案:

答案 0 :(得分: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

然后将N替换为0:

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

但如果您的y / x数据框中有NA,则会失败,或者会导致错误的结果。

答案 1 :(得分:0)

如果它只是一列,这是另一种方法,虽然可能不是最好的方法,但另一种方法:

x$value <- ifelse(rownames(x) %in% rownames(y), y$value, 0)