我有一个数据集,其中包含变量" 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
答案 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
包中使用summarise
和dplyr
个功能
我只使用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")