用 NA 标记冗余行

obr*_*oil 2 r

我有一个包含完整和不完整行的 data.frame,例如:

dat <- data.frame(
  "one" = c(1, 1, 1, 3, NA),
  "two" = c(2, 2, NA, 4, 4),
  "three" = c(1, 1, NA, 5, 5),
  "four"  = c(2, NA, 2, 6, 6)
)
Run Code Online (Sandbox Code Playgroud)

我想将包含 NA 的行标记为 TRUE,其中它们的值等于同一列中的值,在具有较少 NA 的行上,所以

dat$redundant <- c(FALSE, TRUE, TRUE, FALSE, TRUE)
Run Code Online (Sandbox Code Playgroud)

本质上,我正在寻找duplicated(dat, MARGIN = 1)NA计数为与任何当前值的匹配。这可能吗?

akr*_*run 5

我们可以用

library(dplyr)
library(tidyr)
dat %>% 
     fill(everything()) %>% 
     duplicated
 #[1] FALSE  TRUE  TRUE FALSE  TRUE
Run Code Online (Sandbox Code Playgroud)