从上一个非NA值中获取索引

时间:2018-11-16 14:57:50

标签: r tidyverse na

我有这个向量

set.seed(234)
x <- sample(c(rep(NA,3),1:5))
x
[1]  3  5 NA  1  4 NA NA  2

对于每个NA,我想要最后一个非NA值的索引(或值)。也就是说,对于第一个NA,最后一个先前的非NA具有索引2。对于后两个NA,最后一个先前的非NA具有索引5 :

[1]  NA  NA 2  NA  NA 5 5  NA

可以使用基础Rtidyverse。我尝试了lagleadrleglcoalesce的组合,但是都没有成功。例如,这很接近,但仍然是错误的。

a <- rle(is.na(x))
rep(1:length(a$lengths), a$lengths)
[1] 1 1 2 3 3 4 4 5

2 个答案:

答案 0 :(得分:6)

使用基数

y=1:length(x)
y[is.na(x)]=0
y=cummax(y)
y[!is.na(x)]=NA

y
[1] NA NA  2 NA NA  5  5 NA

Henrik挤到one_line

replace(cummax(seq_along(x) * !is.na(x)), !is.na(x), NA)

答案 1 :(得分:0)

这是一种通过setLayout(new GridBagLayout()); jLabel = new JLabel(); GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.VERTICAL; gbc.gridy = 1; add(jLabel, gbc); 函数tidyr

获取值的方法
fill