Чтение строк с определенными значениями столбцов - PullRequest
0 голосов
/ 16 июня 2011

Я хочу извлечь набор строк существующего набора данных:

 dataset.x <- dataset[(as.character(dataset$type))=="x",]

, однако, когда я запускаю

   summary(dataset.x$type)

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

   x 12354235    #the correct itemcount
   y 0
   z 0
   a 0
   ...

Мало того, что присутствие 0 элементов уродливо, но также портит любой график dataset.x из-за присутствия сотен записей со значением 0.

Ответы [ 4 ]

3 голосов
/ 17 июня 2011

Другие объяснили, что происходит и как это исправить, я просто хочу показать, почему это желаемое значение по умолчанию.

Рассмотрим следующий пример кода:

mydata <- data.frame( 
    x = factor( rep( c(0:5,0:5), c(0,5,10,20,10,5,5,10,20,10,5,0))),
    sex = rep( c('F','M'), each=50 ) )

mydata.males <- mydata[ mydata$sex=='M', ]
mydata.males.dropped <- droplevels(mydata.males)

mydata.females <- mydata[ mydata$sex=='F', ]
mydata.females.dropped <- droplevels(mydata.females)

par(mfcol=c(2,2))
barplot(table(mydata.males$x), main='Male', sub='Default')
barplot(table(mydata.females$x), main='Female', sub='Default')

barplot(table(mydata.males.dropped$x), main='Male', sub='Drop')
barplot(table(mydata.females.dropped$x), main='Female', sub='Drop')

Который производит этот участок:

enter image description here

Теперь, что является более значимым сравнением, 2 графика слева? или 2 участка справа?

Вместо того, чтобы сбрасывать неиспользуемые уровни, может быть лучше переосмыслить то, что вы делаете. Если основной целью является получение количества х, то вы можете использовать sum вместо поднабора и получения сводки. И насколько значимым может быть график для переменной, для которой вы уже указали одно значение?

3 голосов
/ 16 июня 2011

Основываясь на ответе Чейза, подстановка и отбрасывание неиспользуемых уровней в коэффициентах очень важны, поэтому стоит просто создать свою собственную функцию, комбинируя droplevels и subset:

subsetDrop <- function(...){droplevels(subset(...))}
3 голосов
/ 16 июня 2011

Я предполагаю, что это фактор? Если это так, можно использовать droplevels(): http://stat.ethz.ch/R-manual/R-patched/library/base/html/droplevels.html

Если вы добавите небольшой воспроизводимый пример, он поможет другим попасть на ту же страницу и даст лучший совет, если это не так.

1 голос
/ 16 июня 2011

Попробуйте

набор данных $ type <- as.character (набор данных $ типа) </p>

с указанием вашего исходного кода. Вероятно, просто R все еще рассматривает этот столбец как factor и хранит всю информацию об этом факторе в столбце.

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