Почему я теряю строки, когда я подмножество? - PullRequest
0 голосов
/ 08 февраля 2019

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

            Date       Time Consumption  kVARh      kW weekday
2     2016-12-13    0:15:00      90.144  0.000 360.576     Tue
3     2016-12-13    0:30:00      90.144  0.000 360.576     Tue
4     2016-12-13    0:45:00      91.584  0.000 366.336     Tue
5     2016-12-13    1:00:00      93.888  0.000 375.552     Tue
6     2016-12-13    1:15:00      88.416  0.000 353.664     Tue
7     2016-12-13    1:30:00      88.704  0.000 354.816     Tue
8     2016-12-13    1:45:00      91.296  0.000 365.184     Tue

Я получил данные из CSV с датой в качестве фактора, которую я изменил на as.character, а затем as.date.Затем я добавил столбец с указанием дня недели, используя

sigEx1DF$weekday <- format(as.Date(sigEx1DF$Date), "%a")

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

Это гранулированные данные от интеллектуального измерителя, который измеряетиспользование (потребление) с 15-минутными интервалами.kW - это Consumption*4.Мне нужно усреднять каждый будний день, а затем получить максимум средних значений, но когда я поднабором, фрейм данных выглядит следующим образом:

            Date     Time Consumption  kVARh      kW weekday
3     2016-12-13  0:30:00      90.144  0.000 360.576     Tue
8     2016-12-13  1:45:00      91.296  0.000 365.184     Tue
13    2016-12-13  3:00:00      93.600  0.000 374.400     Tue
18    2016-12-13  4:15:00      93.312  0.000 373.248     Tue
23    2016-12-13  5:30:00     107.424  0.000 429.696     Tue
28    2016-12-13  6:45:00     103.968  0.000 415.872     Tue
33    2016-12-13  8:00:00     108.576  0.000 434.304     Tue

Несколько из 15-минутных интервалов сейчас отсутствуют (строки 4-7,например).Я не вижу различий в строках 4-7, но они отсутствуют после подмножества.

Это код, который я использовал для подмножества:

bldg1_Wkdy <- subset(sort.df, weekday == c("Mon","Tue","Wed","Thu","Fri"), 
select = c("Date","Time","Consumption","kVARh","kW","weekday"))

Вот структура фрейма данныхперед подмножеством:

'data.frame':   72888 obs. of  6 variables:
 $ Date       : Date, format: "2016-12-13" "2016-12-13" "2016-12-13" ...
 $ Time       : Factor w/ 108 levels "0:00:00","0:15:00",..: 2 3 4 5 6 7 8 49 50 51 ...
 $ Consumption: num  90.1 90.1 91.6 93.9 88.4 ...
 $ kVARh      : num  0 0 0 0 0 0 0 0 0 0 ...
 $ kW         : num  361 361 366 376 354 ...
 $ weekday    : Ord.factor w/ 7 levels "Sun"<"Mon"<"Tue"<..: 3 3 3 3 3 3 3 3 3 3 ...

Я перешел от 72888 наблюдений к 10 427 в будние дни и в 10 368 в выходные дни, причем многие строки, как кажется, случайно отсутствуют, как отмечено выше.Некоторые интервалы имеют нулевое потребление (электричество может отсутствовать из-за шторма или по другим причинам), но они фактически отображаются в данных подмножества.Так что не похоже, что нули вызывают проблему.Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 08 февраля 2019

Вместо weekday == c("Mon","Tue","Wed","Thu","Fri") следует использовать weekday %in% c("Mon","Tue","Wed","Thu","Fri"), см. Ниже минимальный тест, который показывает, как %in% работает должным образом:

> subset(x, weekday == c("Mon","Tue","Wed","Thu","Fri"))
   weekday
NA    <NA>
> subset(x, weekday %in% c("Mon","Tue","Wed","Thu","Fri"))
  weekday
1     Tue
...