基于对称性实现NA

时间:2017-12-20 14:46:15

标签: r dplyr data.table transformation

想象一下,您有一个类似于以下矩阵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

我希望以下列直观的形式完成这些NAs:

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

如何以最佳方式进行此转换?

1 个答案:

答案 0 :(得分:4)

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答案,而且在欺骗中,但它并没有假设缺失值的特定位置。