簡體   English   中英

group_by 按名稱前綴匯總

[英]group_by summarise by name prefix

我的實際數據集比下面的虛擬數據復雜一點。 我想告訴 R 對以前綴“cat_”開頭的任何變量進行求和匯總。 現在我正在單獨做。 有什么建議么?

dput(df)
structure(list(ID = c("A", "B", "C", "D", "A", "B", "C", "D", 
"A", "B", "C", "D"), year = c(1900, 1900, 1900, 1900, 1901, 1901, 
1901, 1901, 1902, 1902, 1902, 1902), val = c(2635L, 8573L, 5942L, 
7390L, 8762L, 7871L, 7848L, 1928L, 6772L, 6487L, 6005L, 5341L
), cat_TS = c(1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), 
    cat_1 = c(0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L), 
    cat_2 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L)), row.names = c(NA, 
-12L), class = c("tbl_df", "tbl", "data.frame"))

df <- df %>% group_by(ID) %>% 
  summarise(cat_TS = sum(cat_TS), cat_1 = sum(cat_1), cat_2 = sum(cat_2))

使用dplyr::starts_with到 dplyr:: dplyr::across中以名稱'cat'開頭的 select 列對summarise中的所有這些列進行求和。

library(dplyr)

df %>% group_by(ID) %>%
  summarise(
    across(starts_with("cat"), sum)
  )

# # A tibble: 4 × 4
#   ID    cat_TS cat_1 cat_2
#   <chr>  <int> <int> <int>
# 1 A          1     1     1
# 2 B          0     1     0
# 3 C          0     0     0
# 4 D          1     0     0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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