【问题标题】:R counting duplicate items that occur in multiple groupsR计算多个组中出现的重复项目
【发布时间】:2021-02-28 22:47:39
【问题描述】:
#Create a sample data frame:

set.seed(1)

Data <- data.frame(Vendor_ID = sample(1:10000), Bank_Account_ID = sample(1:10000))

大家好。我有一个数据框,它是供应商 ID 的集合和每个供应商的银行帐号。我正在尝试找到一种方法来计算出现在多个 vendor_ID 中的重复银行帐户的数量。

我可以使用 dplyr 和 group_by 对同一供应商中出现的银行账户进行计数并进行计数,但我无法找到一种方法来计算多个 vendor_ID 中的重复项。

提前感谢您的帮助。

【问题讨论】:

  • Data %&gt;% group_by(Bank_Account_ID) %&gt;% filter(n_distinct(Vendor_ID) &gt; 1) 能满足您的需求吗?
  • 这似乎会产生一个 tibble,但如果可能的话,我正在尝试添加一个新的变量列,其中包含原始数据框每一行中重复银行账户的计数。
  • 啊,我明白了。 Data = Data %&gt;% group_by(Bank_Account_ID) %&gt;% mutate(Num_Vendors) = n_distinct(Vendor_ID)) 怎么样?
  • 给我一个奇怪的错误:list2(...) 中的错误:找不到对象'Vendor_ID'
  • @manotheshark 是对的;应该是Data = Data %&gt;% group_by(Bank_Account_ID) %&gt;% mutate(Num_Vendors = n_distinct(Vendor_ID))

标签: r dplyr


【解决方案1】:

既然 A.S.K. 的评论输出似乎被接受:

library(dplyr)
DataDplyr = Data %>% 
  group_by(Bank_Account_ID) %>% 
  mutate(Num_Vendors = n_distinct(Vendor_ID))

您也可以使用 data.table 来获得相同的输出:

library(data.table)
DataDatatable = as.data.table(Data)
DataDatatable[,Num_Vendors:=uniqueN(Vendor_ID),.(Bank_Account_ID)]

测试2个输出是否相等:

all_equal(DataDplyr,DataDatatable)
#[1] TRUE

【讨论】:

    猜你喜欢
    • 2014-10-16
    • 2020-03-23
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 2012-07-23
    相关资源
    最近更新 更多