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 添加值并用 zeros.ie 填充空白:

      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)

编辑我得到它给 NAS 使用 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

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

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