[英]Count number of occurrences in R
對於示例數據框:
df <- structure(list(area = c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"),
count = c(1L, 1L, 1L, 3L, 4L, 2L, 2L, 4L, 2L, 5L, 6L)),
.Names = c("area", "count"), class = c("tbl_df", "tbl", "data.frame"),
row.names = c(NA, -11L), spec = structure(list(cols = structure(list(area = structure(list(),
class = c("collector_character", "collector")), count = structure(list(), class = c("collector_integer",
"collector"))), .Names = c("area", "count")), default = structure(list(), class = c("collector_guess",
"collector"))), .Names = c("cols", "default"), class = "col_spec"))
...列出了每個區域中某事物出現的次數,我希望生成另一個匯總表,其中顯示有一個區域,兩個事件,三個事件等的區域。例如,存在三個區域,其中“每個區域一個事件“,三個區域,每個區域出現兩次”,一個區域,“每個區域出現三次”,等等。
什么是產生我想要的結果的最佳軟件包/代碼? 我已經嘗試過使用聚合和plyr,但是到目前為止還沒有成功。
我喜歡data.table語法
library(data.table)
setDT(df) # transform data.frame into data.table format
# .N calculates the number of observations, by instance of the count variable
df[, .(n_areas = .N), by = count]
count n_areas
1: 1 3
2: 3 1
3: 4 2
4: 2 3
5: 5 1
6: 6 1
請參閱此問題,以比較最常用於這種操作的兩個大軟件包: dplyr
和data.table
data.table與dplyr:一個人能做得很好而另一個不能做得不好嗎?
您可以使用基本的R函數:使用@Jimbou解決方案
table(df$count)
1 2 3 4 5 6
3 3 1 2 1 1
使用精彩的dplyr
庫,這非常直觀。
首先,我們根據count
的唯一值對數據進行分組,然后使用n()
每組中出現的次數進行計數。
library(dplyr)
df %>%
group_by(count) %>%
summarise(number = n())
# A tibble: 6 x 2
count number
<int> <int>
1 1 3
2 2 3
3 3 1
4 4 2
5 5 1
6 6 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.