0

我编写了 R 代码,它根据第一列合并两个数据帧,对于缺失的数据,添加上面的值。这是做什么:

两个输入数据帧:

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 回答