2016-10-21 7 views
2

У меня есть таблица с более чем 200 категориальными переменными. Образец:Частота перекрестной табуляции в R для категориальных переменных

Cat1 Cat2 Cat3 
A B A 
B A A 
A C A 
A B A 

Я хочу получить частоты (количество раз) в категории данных. Что-то вроде этого:

  • A 8
  • B 3 ..

Я очень новой для R и попытался использовать для цикла, чтобы получить результат. Я уверен, что есть лучшие способы сделать это. Не могли бы вы мне помочь?

+0

«' '' '' в 'Cat1' то же самое, что и' '' '' в 'Cat2', например? То есть, вы хотите считать '' A ''внутри каждой переменной или по всем переменным? – gung

+0

Благодарим за редактирование. Да, пожалуйста, мигрируйте. –

+0

Да «A» в cat1 такой же, как «A» в других переменных. –

ответ

1

В целом, наиболее удобная функция для подсчета, сколько жетонов вы имеете каждого типа ?table:

d <- read.table(text="Cat1 Cat2 Cat3 
A B A 
B A A 
A C A 
A B A", header=T) 
table(d$Cat1) 
# A B 
# 3 1 

Самый удобный способ выполнить table() для каждого категориальной переменной в наборе данных является использование ?summary.data.frame:

summary(d) 
# Cat1 Cat2 Cat3 
# A:3 A:1 A:4 
# B:1 B:2   
#  C:1   

с другой стороны, если вы хотите, чтобы получить таблицу, которая коллапсирует на все категориальные переменные, вы можете использовать table() с ?unlist:

table(unlist(d)) 
# A B C 
# 8 3 1 

Чтобы понять, что там происходит, то, что нужно понимать, что в R кадр данных представляет собой особый вид списка: каждая переменная является вектором, а кадр данных представляет собой список векторов одинаковой длины (см , here). Функция unlist() превращает их в один длинный вектор, конкатенированный от первого до последнего. Обратите внимание, что если вы примете некоторые некатегорические переменные, вам нужно будет исключить те, у которых есть что-то вроде table(unlist(d[,c(<variables to use>)])).

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