计算和分组 R 中的出现次数

Counting and grouping number of occurrencies in R

我有一个数据集,其中包含变量“customerID”和“Country”。当然,有几个实例具有相同的 customerID,因为它是一个包含零售店年度数据的数据集。我想按国家/地区计算客户数量,但问题是我不知道如何“增加”计数器每个 customerID 一次。我认为我必须同时使用 table()unique() 函数,但我不知道如何使用。

数据集如下所示

    InvoiceNo   StockCode    CustomerID        Country
1   536365      70897a       17850             United Kingdom     
2   536365      71053        17850             United Kingdom
3   536365      84406B       17850             United Kingdom
4   536366      22752        18652             United Kingdom
5   536367      66543        18652             United Kingdom
6   536368      71053        17556             USA

我想在 return 中有一个像这样的 table(或数据框)

United Kingdom     USA
             2       1

我认为 table 函数是可行的方法。如果您遇到重复行的问题,您可能需要先清理它们。例如,您可以使用数字索引来解决该问题。

一旦你开始 table 工作,你就可以做一个总结 table。这是一个假设的例子:

summary_table <- data.frame(
    customerID_count=table(your_data$_customerID), 
    country_count = table(your_data$country)
)

(ps: 很好地问了你的第一个问题并开始使用 Whosebug。你应该包括一个工作示例)

我相信我们可以在 dplyr

中使用 group_bysummarise 函数

我创建了一个仅包含 customerID (V1) 和 country(V2) 的示例数据框

df <- data.frame(V1=c("17850","17850","17850","18652","18652","17556"),V2=c("UK","UK","UK","UK","UK","USA"))
library(dplyr)
df %>% group_by(V2) %>% summarise(count=length(unique(V1)))

      V2 count
1     UK     2
2    USA     1

这是使用 table 和子集的基础 R 方法:

with(unique(df[c("CustomerID", "Country")]), table(Country))
Country
United_Kingdom            USA 
             2              1 

要获得 data.frame,将其换行为 data.frame

data.frame(with(unique(df[c("CustomerID", "Country")]), table(Country)))
         Country Freq
1 United_Kingdom    2
2            USA    1

数据

df <- read.table(header=TRUE, text="InvoiceNo   StockCode    CustomerID  Country
536365      70897a       17850             United_Kingdom
536365      71053        17850             United_Kingdom
536365      84406B       17850             United_Kingdom
536366      22752        18652             United_Kingdom
536367      66543        18652             United_Kingdom
536368      71053        17556             USA")