Использование таблицы на подмножестве дает частоты для всего DF, а не подмножества - PullRequest
2 голосов
/ 25 февраля 2012

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

У меня есть DF с несколькими столбцами, один из которых является состоянием.Мне нужно получить частоты для состояния, но только для некоторого набора состояний.Итак, у меня есть это:

tmp <- subset(DF, DF$STATE %in% SOMESTATES)
a   <- as.data.frame(table(tmp$STATE))

Это почти нормально.Во фрейме данных tmp есть только записи, принадлежащие множеству SOMESTATES, хорошо.

Проблема в том,Результатом таблицы являются полные частоты для всего DF, а не только tmp.Другой имеет нулевые значения.

Моя проблема здесь в том, что некоторые состояния в SOMESTATES имеют нулевые появления в DF, что не позволяет мне использовать уровни снижения.droplevels вынимает и те нулевые значения.Здесь также:

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

tmp <- subset(DF, DF$STATE %in% SOMESTATES)
tmp2 <- droplevels(tmp)
table(tmp2$STATE)

представляет все состояния, а не только состояния вSOMESTATES

Любой совет приветствуется

Ответы [ 2 ]

2 голосов
/ 25 февраля 2012

Попробуйте что-то вроде:

tmp <- subset(DF, DF$STATE %in% SOMESTATES) 
tmp$STATE <- factor(tmp$STATE, levels=SOMESTATES) 
table(tmp$STATE) 

Функция множителя воссоздает его в новый фактор, уровни которого точно соответствуют SOMESTATES. Те состояния, которые не находятся в SOMESTATES, не будут включены, поскольку они не включены ни в данные, ни в SOMESTATES, но те состояния с 0 счетом, которые находятся в SOMESTATES, все равно будут включены в коэффициент, и, следовательно, таблица 0 отсчетов.

Обратите внимание также, что уровни факторов будут упорядочены по SOMESTATES, поэтому порядок в этом векторе будет таким, как показано в таблицах или графиках, использующих его. Обычно это доброкачественно или полезно.

0 голосов
/ 25 февраля 2012

Используйте table(factor(tmp$STATE)) или table(tmp$STATE[, drop=T]). Оба также сохранят первоначальный порядок уровней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...