2013-09-02 3 views
0

Я анализирую данные об отсутствии прогулов для школ и ищут немного помощи. На каждый день у меня есть 360 рядов (классных комнат), содержащих номер дня (столбец 1), отсутствующий (столбец 2) и не учащиеся (колонка 3).Устранение дат по характеристикам во временных рядах

Некоторые дни (праздники) имеют, скажем, 20 классов, потому что другие 340 классов не имели класса. Я хочу ЛИКВИДИТЬ эти строки из моего набора данных. Другими словами, я хочу устранить классы и хочу исключить из моего набора данных все записи, в которых общее количество записей для даты меньше определенного числа. Другими словами, я хочу, чтобы удалить все строки с датой х, если общее количество строк с указанной даты х меньше, чем 200.

Here's, что I've получил до сих пор:

for (i in c(min(df$date):max(df$date))){ 
    b <- df[df$date == i,] 
    z <- as.vector(ifelse(nrow(b[which(b$date==i),]) <200, "FALSE", "TRUE")) 
    print(z) 
    df$newcolumn <- z 
} 

Этот prints z, который изо дня в день говорит мне, что этот день соответствует моим условиям, но я не могу понять, как включить z обратно в 10000 строк строк данных. Вместо этого моя df $ newcolumn просто заполняется всеми ИСТИНАМИ.

Любая помощь была бы принята с благодарностью.

ответ

1

Трудно сделать для реального без воспроизводимого примера, но не что-то вроде df[ ! df$date %in% z, ] работы?

%in% возвращает логический вектор, существует ли каждый элемент в другом векторе, ! сводит на нет, так что возвращает значение TRUE, если это> 200, а [ rowselector,] выбирает строку из data.frame.

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