计算和分组R中的发生次数

时间:2017-01-26 02:47:19

标签: r group-by counting

我有一个数据集,其中包含变量" customerID "和" 国家/地区"。当然,有几个实例具有相同的 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

我希望像这样有一个表(或数据帧)

United Kingdom     USA
             2       1

3 个答案:

答案 0 :(得分:0)

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

table工作后,您可以制作摘要表。这是一个假设的例子:

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

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

答案 1 :(得分:0)

我相信我们可以在group_by包中使用summarisedplyr个功能

我只使用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

答案 2 :(得分:0)

以下是使用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")