Преобразовать переданную по конвейеру последовательность операторов в функцию R или аналогичную (в идеале, используя Tidyverse) - PullRequest
1 голос
/ 04 июня 2019

Я пытаюсь преобразовать конвейерную последовательность операторов в функцию R или аналогичную (в идеале, используя Tidyverse).

Входные данные представляют собой аккуратный фрейм данных с ответами на 15 вопросов в качестве переменных и каждым из 10наблюдения представляют собой один из 4 стандартных ответов (например, согласен, не согласен и т. д.)

Выходные данные должны представлять собой сводку ответов с указанием количества и процента распределения ответов / наблюдений для каждого вопроса / переменной.

Чтобы избежать копирования и вставки, а также для улучшения кода, я хотел бы обернуть функцию или аналогичную функцию для вычисления количества и процентов в цикле, на карте Пурра или аналогичную для итерации по 15 вопросам.

Спасибо за ваши предложения.


Приведенный ниже код работает, как и ожидалось, и отвечает таблицей вопросов, подсчета и процентов со значениями для «Согласен» и т. Д. В конечном счете, это то, чего я пытаюсь достичьв масштабе и элегантно.

DF %>%
  select(question) %>%
  group_by(question) %>%
  summarise(Count = n()) %>%
  mutate (Percentage = round(100 * Count / sum(Count),0))

Фон

Я начинаю сtidy dataframe:

*'data.frame':  10 obs. of  15 variables:
 $ Question1                   : Factor w/ 4 levels "Agree","Neither agree nor disagree",..: 1 1 1 1 1 1 1 1 1 1 ...*

Следующее приближает меня без процентов:

DF_as_list <- DF %>%
  map(summary)

путем создания

 *List of 15
 $ Question1                   : Named int [1:4] 10 0 0 0
  ..- attr(*, "names")= chr [1:4] "Agree" "Neither agree nor disagree" "Disagree" "Don't know"*

И менее полезного

> DF_from_list<- data.frame(matrix(unlist(DF_as_list),
> nrow=length(DF_as_list), byrow=T))

создает:

*'data.frame':  15 obs. of  4 variables:
 $ X1: int  10 10 ...
 $ X2: int  0 0 ...
 $ X3: int  0 0 ...
 $ X4: int  0 0 ...*

Наконец,

DF_as_tibble <- as_tibble(DF_as_list) 

создает полезную сводную таблицу

*Classes ‘tbl_df’, ‘tbl’ and 'data.frame':  4 obs. of  15 variables:
 $ Question1                   : int  10 0 0 0
 $ Question2                   : int  10 0 0 0*

и

DF_as_tibble %>%
  map(summary)

производит полезную сводную статистику (мин, медиана, среднее, макс, 1-й и 3-й кв), но не процентное распределение ответов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...