consecutive_id()
生成一個唯一標識符,每次變量(或變量組合)更改時該標識符都會遞增。受到data.table::rleid()
的啟發。
例子
consecutive_id(c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, NA, NA))
#> [1] 1 1 2 2 3 4 5 5
consecutive_id(c(1, 1, 1, 2, 1, 1, 2, 2))
#> [1] 1 1 1 2 3 3 4 4
df <- data.frame(x = c(0, 0, 1, 0), y = c(2, 2, 2, 2))
df %>% group_by(x, y) %>% summarise(n = n())
#> `summarise()` has grouped output by 'x'. You can override using the
#> `.groups` argument.
#> # A tibble: 2 × 3
#> # Groups: x [2]
#> x y n
#> <dbl> <dbl> <int>
#> 1 0 2 3
#> 2 1 2 1
df %>% group_by(id = consecutive_id(x, y), x, y) %>% summarise(n = n())
#> `summarise()` has grouped output by 'id', 'x'. You can override using the
#> `.groups` argument.
#> # A tibble: 3 × 4
#> # Groups: id, x [3]
#> id x y n
#> <int> <dbl> <dbl> <int>
#> 1 1 0 2 2
#> 2 2 1 2 1
#> 3 3 0 2 1
相關用法
- R dplyr context 有關“當前”組或變量的信息
- R dplyr copy_to 將本地數據幀複製到遠程src
- R dplyr coalesce 找到第一個非缺失元素
- R dplyr compute 強製計算數據庫查詢
- R dplyr count 計算每組中的觀察結果
- R dplyr cumall 任何、全部和平均值的累積版本
- R dplyr case_match 通用向量化 switch()
- R dplyr c_across 合並多列的值
- R dplyr cross_join 交叉連接
- R dplyr case_when 通用向量化 if-else
- R dplyr group_trim 修剪分組結構
- R dplyr slice 使用行的位置對行進行子集化
- R dplyr sample_n 從表中采樣 n 行
- R dplyr row_number 整數排名函數
- R dplyr band_members 樂隊成員
- R dplyr mutate-joins 變異連接
- R dplyr nth 從向量中提取第一個、最後一個或第 n 個值
- R dplyr group_split 按組分割 DataFrame
- R dplyr mutate 創建、修改和刪除列
- R dplyr order_by 用於排序窗口函數輸出的輔助函數
- R dplyr percent_rank 比例排名函數
- R dplyr recode 重新編碼值
- R dplyr starwars 星球大戰人物
- R dplyr desc 降序
- R dplyr between 檢測值落在指定範圍內的位置
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Generate a unique identifier for consecutive combinations。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。