Итеративная фильтрация по таблице данных в R

#r #loops #filter

Вопрос:

У меня есть таблица данных с 3 переменными, 1 столбцом частоты, и я хочу добавить еще один столбец пропорций.

Переменная 1 имеет 4 уникальных значения. Переменная 2 имеет 5, А Переменная 3 имеет 2.

введите описание изображения здесь

Частоты фиксируют количество раз, когда это происходит. Но если я добавлю к нему prop.table, он вычислит пропорцию по отношению ко всей таблице data.table, когда я действительно хочу, чтобы он рассчитал пропорцию в подмножествах переменной 2.

Я думал об итерации, но в таблицах это кажется сложным.

Ответ №1:

Вы можете использовать aggregate функцию (или tapply) для суммирования всех подсчетов в категориях переменной 2, а затем использовать prop.table или аналогично результату.

Если вы хотите использовать tidyverse вместо базы R, то за этим group_by следует summarise добавить в каждую группу, а затем prop_table снова рассчитать пропорции.

Комментарии:

1. Альтернативным решением tidyverse было pivot_longer бы привести фрейм данных в порядок перед вычислением сводки. Если бы необходимо было включить категории нулевой частоты, вам понадобился бы окончательный expand() или аналогичный.