#r #dataframe #dplyr #grouping #transformation
Вопрос:
Итак, у меня есть этот фрейм данных:
# 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 первая строка ) будет указана сумма лайков на 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
Ответ №1:
Мы можем использовать summarise
с across
в tidyverse
после группировки по «Возрасту»
library(dplyr)
df1 %>%
group_by(Age) %>%
summarise(across(where(is.numeric), sum, na.rm = TRUE))
Ответ №2:
данные.таблица
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]