计算和分组 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_by
和 summarise
函数
我创建了一个仅包含 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")
我有一个数据集,其中包含变量“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_by
和 summarise
函数
我创建了一个仅包含 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")