对 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
中使用summarise
和across
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]
所以我有这个数据框:
# 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
中使用summarise
和across
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]