基于对称性实现 NA

Fulfilling NAs based on symmetry

假设您有一个类似于下面的矩阵 M 的大型数据集:

M <- data.frame(code = c("001", "001", "002", "002", "003", "003"), 
                decr = c("x", NA, "y", "y", NA, "z"))

# M

#   code decr
# 1  001    x
# 2  001 <NA>
# 3  002    y
# 4  002    y
# 5  003 <NA>
# 6  003    z

我想用以下直观的形式完成 NA:

#   code decr
# 1  001    x
# 2  001    x
# 3  002    y
# 4  002    y
# 5  003    z
# 6  003    z

如何才能优化此转换?

library(tidyverse)

M <- data.frame(code = c("001", "001", "002", "002", "003", "003"), 
                decr = c("x", NA, "y", "y", NA, "z"))

M %>% group_by(code) %>% mutate (decr=unique(na.omit(decr)))

这类似于@Sotos 的回答,以及在欺骗中的回答,但它没有假设缺失值的特定位置。