Как посчитать много категориальных значений в строке? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть этот фрейм данных:

IDSurvey = c(12234,23456,12356)
Q1 = c("Yes", "No", "Yes")
Q2 = rep("No",3)
Q3 = rep("Yes", 3)
D = data.frame(IDSurvey, Q1, Q2, Q3)

И я надеюсь, что вы поможете найти этот ответ.

IDSurvey  Q1 Q2  Q3 NunmberOfYes NumberOfNo
    12234 Yes No Yes  2            1 
    23456  No No Yes  1            2 
    12356 Yes No Yes  2            1

Большое спасибо за вашу помощь и терпение.Привет!

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Попробуйте это: предупреждение (я) из-за различных уровней факторов.Вам может понадобиться рефакторинг.

library(dplyr)
library(tidyr)
D %>% 
  gather(key,value,-IDSurvey) %>% 
with(table(IDSurvey,value))

Или это:

D %>% 
  gather(key,value,-IDSurvey) %>% 
  group_by(IDSurvey) %>% 
  count(value) %>% 
  spread(value,n)
0 голосов
/ 05 февраля 2019

Использование базы R

IDSurvey = c(12234,23456,12356)
Q1 = c("Yes", "No", "Yes")
Q2 = rep("No",3)
Q3 = rep("Yes", 3)
D = data.frame(IDSurvey, Q1, Q2, Q3)
str(D)

решение

D$yes <- rowSums(D == "Yes",na.rm=TRUE)
D$No <-  rowSums(D == "No",na.rm=TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...