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