我正在试图找出商店中有多少独特的产品。问题是数据非常混乱。幸运的是,我的计数可能是粗略的估计。在过去的某个时刻,产品名称已替换为产品代码。有些产品有名称,有些产品有代码,有些产品有。我需要在两个列中进行重复数据删除。某些产品名称和产品代码不一致。
例如,请考虑以下示例......
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)))
有什么建议吗?
答案 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