Хобрук: Ваш путь к мастерству в программировании

Есть ли способ использовать `pivot_wider()` для обобщения данных опроса?

У меня есть куча данных опроса, что-то вроде: У меня есть данные опроса, скажем, о том, как часто респонденты занимаются различными повседневными делами:

survey <- tribble(
~Q1_toothbrush, ~Q1_bathe, ~Q1_brush_hair, ~Q1_make_bed,
"Always","Sometimes","Often","Never",
"Never","Never","Always","Sometimes",
"Often","Sometimes","Sometimes","Often",
"Sometimes","Always","Often","Never"
)

Я хочу упорядочить его в виде таблицы, показывающей, сколько людей выбрали «Часто» или «Всегда».

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

  habits <- tribble(
    ~Habit, ~Description, ~Count,
    "Q1_toothbrush", "Brushes teeth for two minutes twice each daty.", 0,
    "Q1_bathe", "Bathes with soap and water every morning or evening", 0,
    "Q1_hair", "Attends to daily hair health", 0,
    "Q1_make_bed", "Tidies bed covers daily", 0
  ) 
  
  top_two <- c("Always", "Often")
  
  tmp <- survey %>% 
    filter(Q1_toothbrush %in% top_two) %>%
    count()
  
  habits <- habits %>% 
    mutate(Count = ifelse(Habit == "Q1_toothbrush", tmp, Count))

  
  kable(habits)

Но я изо всех сил пытаюсь объединить это в одну функцию.

21.08.2020

  • Я просто перезапустил его, и я не получаю ошибку. 22.08.2020
  • извините, это маскировка функции 22.08.2020

Ответы:


1

Если нам нужно сделать это для каждой строки, вариант c_across после выполнения rowwise

library(dplyr) # >= 1.0.0
survey %>% 
    rowwise %>%
    mutate(count = sum(c_across(everything()) %in% top_two)) %>%
    ungroup

Или мы можем изменить форму на «длинный» формат, а затем выполнить count

library(dplyr)
library(tidyr)
pivot_longer(survey, everything()) %>%
      filter(value %in% top_two) %>%
      dplyr::count(name)
21.08.2020
  • И тогда я могу сгруппировать и посчитать: pivot_longer(survey, everything()) %>% filter(value %in% top_two) %>% group_by(name) %>% count() 22.08.2020
  • @ Аманда, если вам нужно, чтобы name считалось, удалите из него value, то есть count(name) 22.08.2020
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

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

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..