Создание нескольких сводных таблиц с одной функцией в R - PullRequest
1 голос
/ 03 февраля 2020

Я не смог найти ответ на этот конкретный c вопрос, извините, если его спросили:

library(tidyverse)
#sampledata
df <- data.frame(group=c(1, 1, 1, 1, 0, 0, 0, 0),
                 v1=c(1, 0, 0, 1, 0, 1, 1, 1),
                 v2=c(0, 0, 0, 0, 1, 0, 0, 1),
                 v3=c(0, 1, 0, 1, 1, 0, 1, 1))

Я хочу найти количество «1» и «0» в каждом v1, v2, v3 для каждого уровня "группы". В настоящее время я использую

table(df$group, df$v1) 
table(df$group, df$v2)
table(df$group, df$v3)

ad nauseum, чтобы получить число «1» в каждой переменной, но я не могу понять, как создать много таких таблиц с помощью одной функции ... Любая помощь будет с благодарностью

1 Ответ

0 голосов
/ 03 февраля 2020

Мы можем использовать lapply, чтобы применить одну и ту же функцию к нескольким столбцам.

lapply(df[-1], function(x) table(df$group, x))

#$v1
#   x
#    0 1
#  0 1 3
#  1 2 2

#$v2
#   x
#    0 1
#  0 2 2
#  1 4 0

#$v3
#   x
#    0 1
#  0 1 3
#  1 2 2

Или с dplyr мы можем использовать count

purrr::map(names(df)[-1], ~count(df, group, !!sym(.x)))
...