[英]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
我想有一个表(或数据框)这样的回报
United Kingdom USA
2 1
我认为table
功能是要走的路。 如果您对重复的行有疑问,则可能要先清理它们。 例如,您可以使用数字索引来解决该问题。
一旦table
工作,就可以制作汇总表。 这是一个假设的示例:
summary_table <- data.frame(
customerID_count=table(your_data$_customerID),
country_count = table(your_data$country)
)
(ps:很好的问了第一个问题,并开始使用stackoverflow。您应该包括一个有效的示例)
我相信我们可以使用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
这是使用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")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.