簡體   English   中英

計算R中出現的次數

[英]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

請參閱此問題,以比較最常用於這種操作的兩個大軟件包: dplyrdata.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM