两列重复数据删除

时间:2018-05-25 18:54:47

标签: r

我正在试图找出商店中有多少独特的产品。问题是数据非常混乱。幸运的是,我的计数可能是粗略的估计。在过去的某个时刻,产品名称已替换为产品代码。有些产品有名称,有些产品有代码,有些产品有。我需要在两个列中进行重复数据删除。某些产品名称和产品代码不一致。

例如,请考虑以下示例......

data.frame(product_name = c("A", "B", "B", NA), product_code = c(NA, 1, 2, 1))
# product_name product_code
#            A           NA
#            B            1
#            B            2
#         <NA>            1

它应该算上两种独特的产品。第一行是独一无二的。第二行和第三行共享一个产品名称,而第二行和第四行共享一个代码。

这是一个包含更多数据的示例。大量的NA值与我的真实数据集类似。

df <- data.frame(product_name = c(rep(LETTERS, 2), rep(NA, 48)),
           product_code = c(rep(NA, 10), sample(1:80, 90, replace = TRUE)))

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

使用dplyr,您可以使用distinct()

library(dplyr)

df %>% 
  distinct(product_name, .keep_all=TRUE) %>%
  distinct(product_code, .keep_all=TRUE)

输出:

  product_name product_code
1            A           NA
2            B            1

添加count()以获取计数:

df %>% 
  distinct(product_name, .keep_all=TRUE) %>%
  distinct(product_code, .keep_all=TRUE) %>%
  count() # 2