对 R 中的相似行进行分组和求和

Grouping and summing similar rows in R

所以我有这个数据框:

# A tibble: 268 x 7
 Age   Facebook_likes Instagram_likes Twitter_likes Tiktok_likes Reddit_likes
 <chr>          <dbl>           <dbl>         <dbl>        <dbl>        <dbl>
1 18-24              1               1             0            0            0
2 <18                0               0             0            0            0
3 18-24              1               1             1            0            0
4 18-24              0               0             0            0            0
5 18-24              0               0             0            0            0
6 25-34              0               1             0            0            0
7 18-24              1               1             0            0            0
8 18-24              0               1             0            0            0
9 25-34              0               0             0            0            1
10 18-24              1               0             0            0            0
# ... with 258 more rows, and 1 more variable:

年龄变量只有 4 个观测值(<18、18-24、25-34、35>)。 我想要做的是转换这个数据框,这样我只有那 4 行,每个变量都是总和。例如:第一个网格(第一列 x 第一行)将包含小于 18 岁的人在 Facebook 上的点赞总数:

# 
   Age   Facebook_likes                     Instagram_likes Twitter_likes Tiktok_likes Reddit_likes
   <chr>          <dbl>                              <dbl>         <dbl>        <dbl>        <dbl>
 1 <18    sum(facebook_likes for those <18)               
 2 18-24                
 3 25-34            
 4 >35           
 

按'Age'

分组后,我们可以在tidyverse中使用summariseacross
library(dplyr)
df1 %>%
  group_by(Age) %>%
  summarise(across(where(is.numeric), sum, na.rm = TRUE))

data.table

library(data.table)

cols_likes <- grep("_likes$", names(df), value = TRUE)

cols_likes <- sapply(df, is.numeric)

setDT(df)[, lapply(.SD, sum, na.rm = TRUE), by = Age, .SDcols = cols_likes]