0

最初の列に基づいて2つのデータフレームをマージし、欠落しているデータに対して上記の値を追加するRコードを作成しました。これが何であるかです:

2つの入力データフレーム:

1 a
2 b
3 c
5 d

1 e
4 f
6 g

私のコードはこの出力を与えます:

   1 a e
   2 b e
   3 c e
   4 c f
   5 d f
   6 d g

ただし、私のコードは適切にベクトル化されていないため、非効率的です。使用できるR関数はありますか?基本的に私が探している関数は、欠落している値/ NA値を埋め、前の要素から値を取得して、NAの代わりに配置することです。

Rの参考書を調べましたが、何も見つかりませんでした。

4

1 に答える 1

2

これを利用したソリューションは次のとおりですzoo::na.locf

library(zoo)

a <- data.frame(id=c(1,2,3,5), v=c("a","b","c", "d"))
b <- data.frame(id=c(1,4,6), v=c("e", "f", "g"))

n <- max(c(a$id, b$id))

an <- merge(data.frame(id=1:n), a, all.x=T)
bn <- merge(data.frame(id=1:n), b, all.x=T)

an$v <- na.locf(an$v)
bn$v <- na.locf(bn$v)


data.frame(an$id, an$v, bn$v)
      an.id an.v bn.v
1     1    a    e
2     2    b    e
3     3    c    e
4     4    c    f
5     5    d    f
6     6    d    g
于 2012-10-12T12:45:37.080 に答える