2016-03-18 1 views
0

Я борюсь с несколькими ответами на вопросы в R. Я надеюсь найти простой способ справиться с этим с dplyr и tidyr. Ниже представлен образец нескольких кадров с задержкой. Я пытаюсь сделать что-то, во-первых, создать проценты -% кошек,% собак и т. Д. Процент будет иметь общие ответы. Мой обычный процент расчета -Вопросы множественного ответа с использованием Dplyr и Tidyr

group_by(_)%>%summarise(count=n())%>%mutate(percent=count/sum(count)) 

, похоже, не разрезал его в этой ситуации. Может быть, мне нужно использовать summaryise_each или более специализированную функцию? Я все еще новичок и очень новичок в Dplyr и Tidyr. Я также попытался использовать функцию «объединить» Тидира, которая работает, но она включает в себя NA, которые мне придется перекодировать. Но я все еще не могу рассчитать проценты объединенной колонки.

Любые предложения были бы замечательными! Во-первых, как объединить столбцы множественного ответа, используя «объединить» во все возможные комбинации, а затем вычислять проценты каждого из них, а также как просто рассчитать процент каждого столбца двоичного кода как долю от общих ответов? Надеюсь, это имеет смысл! Я уверен, что есть простой и элегантный ответ, который я пропускаю.

Cats<-c(Cat,NA,Cat,NA,NA,NA,Cat,NA) 

Dogs<-c(NA,NA,Dog,Dog,NA,Dog,NA,Dog) 

Fish<-c(NA,NA,Fish,NA,NA,NA,Fish,Fish) 

Pets<-data.frame(Cats,Dogs,Fish) 

Pets<-Pets%>%unite(Combined,Cats,Dogs,Fish,sep=",",remove=FALSE) 

Animals%>%group_by(Combined)%>%summarise(count=n())%>%mutate(percent=count/sum(count)) 
+1

Пожалуйста, поделитесь ожидаемым выходом и данными, которые можно прочитать в R. – mtoto

+0

Спасибо, что высказали свои замечания. Я по-прежнему относительно новичок в этом сайте, что вы подразумеваете под общим ожидаемым выходом? – Mike

+0

, как будут выглядеть данные после желаемого преобразования, которое вы описываете в своем сообщении. – mtoto

ответ

0

Похоже, что вы пытаетесь сделать, может быть сделано с помощью функции «собрать()» от tidyr вместо функции «объединить()», на основе моего понимания вашего вопроса.

library(dplyr) 
library(tidyr) 

Pets %>% 
    gather(animal, type, na.rm = TRUE) %>% 
    group_by(animal) %>% 
    summarize(count = n()) %>% 
    mutate(percentage = count/sum(count)) 

 Смежные вопросы

  • Нет связанных вопросов^_^