【发布时间】:2021-02-17 18:31:38
【问题描述】:
我有一系列ID穿插NA:
x <- c("A", NA, NA, "A", "B", NA, "B", "A", NA, NA, NA, "A", "B", NA, "A")
我需要用最后一个非NA 值替换任何NA 如果下一个非NA 值与最后一个非NA NA 值(例如,"B", NA, "B")。但是,两个相同的非NA 之间的NA 的数量可能会有所不同。这让我想到了这个庞大的代码:
library(dplyr)
ifelse(is.na(x) & lag(is.na(x),1) & lag(is.na(x),2), lag(x,3),
ifelse(is.na(x) & lag(is.na(x),1),lag(x,2),
ifelse(is.na(x) & lead(x,1) == lag(x,1) |
is.na(x) & lead(is.na(x),1), lag(x,1), x)))
[1] "A" "A" "A" "A" "B" "B" "B" "A" "A" "A" "A" "A" "B" NA "A"
- 它可以解决问题,但我想知道是否有更有效的方法不仅可以满足预定数量的干预
NA,而且允许任何数量的干预NA?
【问题讨论】:
标签: r dplyr conditional-statements