2016-03-23 2 views
0

Я пытаюсь просто сосчитать до значений wide набора данных, но без, имеющих для преобразования набора данных в файл long (Люди-период).R - подсчет вхождений без плавления данных

Мои данные выглядит следующим образом:

 alone1 alone2  alone3  alone4  alone5  alone6  alone7  alone8 
1 Mentioned Mentioned  Mentioned  Mentioned  Mentioned  Mentioned  Mentioned  Mentioned 
2 Mentioned Mentioned  Mentioned  Mentioned  Mentioned  Mentioned  Mentioned  Mentioned 
3 Mentioned Mentioned Not mentioned Not mentioned Not mentioned Not mentioned Not mentioned Not mentioned 
4 Mentioned Mentioned Not mentioned Not mentioned Not mentioned Not mentioned Not mentioned Not mentioned 

То, что я хочу сделать это

library(dplyr) 
library(tidyr) 

dt %>% gather %>% group_by(value) %>% summarise(n = n()) 

Что дает мне (это выход Я хочу)

  value n 
1  Mentioned 20 
2 Not mentioned 12 

Однако я не хочу melt или gather my данные.

Любая идея, как я мог просто подсчитать вхождения столбцов, не делая трансформацию периода лица?

dt = structure(list(alone1 = c("Mentioned", "Mentioned", "Mentioned", 
"Mentioned"), alone2 = c("Mentioned", "Mentioned", "Mentioned", 
"Mentioned"), alone3 = c("Mentioned", "Mentioned", "Not mentioned", 
"Not mentioned"), alone4 = c("Mentioned", "Mentioned", "Not mentioned", 
"Not mentioned"), alone5 = c("Mentioned", "Mentioned", "Not mentioned", 
"Not mentioned"), alone6 = c("Mentioned", "Mentioned", "Not mentioned", 
"Not mentioned"), alone7 = c("Mentioned", "Mentioned", "Not mentioned", 
"Not mentioned"), alone8 = c("Mentioned", "Mentioned", "Not mentioned", 
"Not mentioned")), .Names = c("alone1", "alone2", "alone3", "alone4", 
"alone5", "alone6", "alone7", "alone8"), class = "data.frame", row.names = c(NA, 4L)) 

ответ

2

Это вы на самом деле нужно просто отсчеты вы можете использовать table и unlist ваши data.frame

table(unlist(dt)) 

Mentioned Not mentioned 
     20   12 
+0

спасибо приятно простое решение – giacomo

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