使用tidyr :: fill,但要指定特定的填充值

时间:2019-10-22 21:44:22

标签: r tidyr

我正在尝试找出与tidyr :: fill非常相似的功能,但不是使用下一个或上一个条目,而是尝试使用特定值。

举个例子

library(tibble)

xtest <- as.tibble(c(NA,NA, seq(10,70,10), NA, NA))
colnames(xtest)<- "data"
ytest <- tidyr::fill(xtest, 'data', .direction='down')
ytest <- tidyr::fill(ytest, 'data', .direction='up')
ytest

创建的小标题是:

    data
   <dbl>
 1    10
 2    10
 3    10
 4    20
 5    30
 6    40
 7    50
 8    60
 9    70
10    70
11    70

我想做的是将前两个NA替换为0(而不是10s),将后两个NA替换为100(而不是70s)。

.direction选项接近,但使用下一个或上一个条目。

是否可以使用fill()替代方法来提供此功能?

1 个答案:

答案 0 :(得分:4)

您可以使用na.fill软件包中的zoo。您可以为数据的左侧,内部和右侧设置所需的内容。您也可以使用extend而不是值。

zoo::na.fill(xtest, c(0, "extend", 100))

       data
 [1,]     0
 [2,]     0
 [3,]    10
 [4,]    20
 [5,]    30
 [6,]    40
 [7,]    50
 [8,]    60
 [9,]    70
[10,]   100
[11,]   100