如何从数据框中的两列中查找唯一字段值

时间:2013-08-22 05:41:50

标签: r unique

我的数据框包含许多列,包括QuarterCustomerID。在此,我想确定QuarterCustomerID的唯一组合。

例如:

masterdf <- read.csv(text = "
    Quarter,  CustomerID, ProductID
    2009 Q1,    1234,     1
    2009 Q1,    1234,     2
    2009 Q2,    1324,     3
    2009 Q3,    1234,     4
    2009 Q3,    1234,     5
    2009 Q3,    8764,     6
    2009 Q4,    5432,     7")

我想要的是:

FilterQuarter     UniqueCustomerID
2009 Q1           1234
2009 Q2           1324
2009 Q3           8764
2009 Q3           1234
2009 Q4           5432

如何在R中执行此操作?我尝试了unique功能,但它无法正常工作。

2 个答案:

答案 0 :(得分:10)

OP下的长篇评论越来越难以理解。您正在寻找 @RomanLustrik 所指出的duplicated。使用它来像这样对原始data.frame进行子集化...

masterdf[ ! duplicated( masterdf[ c("Quarter" , "CustomerID") ] ) , ]
#  Quarter CustomerID
#1 2009 Q1       1234
#3 2009 Q2       1324
#4 2009 Q3       1234
#6 2009 Q3       8764
#7 2009 Q4       5432

答案 1 :(得分:2)

另一种简单的方法是使用来自R的SQL个查询,检查下面的代码。 这假设masterdf是原始文件的名称......

library(sqldf)
sqldf("select Quarter, CustomerID from masterdf group by 1,2")