【问题标题】:How to find unique field values from two columns in data frame如何从数据框中的两列中查找唯一字段值
【发布时间】:2013-08-22 05:41:49
【问题描述】:

我有一个包含许多列的数据框,包括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 功能,但它没有按我的意愿工作。

【问题讨论】:

  • 看起来他想要唯一的(Quarter, CustomerID) 对。但是,不清楚他希望如何将这些新数据与可能不同维度的数据框进行列绑定。
  • 我希望两列都具有唯一值,即如果 CustomerID 1234 出现在 2009 年第三季度,它应该会出现。但如果我使用独特的,它只需要 2009 年第一季度。
  • 我在这里编辑过 2009 Q1 和 2009 Q3 都有 CustomerID 1234 所以如果我使用独特的功能它只需要一次我希望它应该在 2009 Q1 和 2009 Q3 都出现。感谢您的快速回复。
  • 你如何应用你的unique函数?我一直在问这个......
  • 参见 Arun v

标签: r unique


【解决方案1】:

OP 下的长 cmets 越来越难以跟上。正如 @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

【讨论】:

  • 谢谢你,在你的命令@SimonO101 的帮助下,我得到了我想要的输出。
  • @user2492230 欢迎您。我很高兴我们能解决这个问题!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2014-11-09
    • 2020-07-21
    • 2019-09-19
    • 1970-01-01
    • 2020-02-16
    • 2020-07-18
    • 2011-04-22
    • 2021-06-30
    相关资源
    最近更新 更多