R подмножество data.frame на временных метках - PullRequest
0 голосов
/ 24 января 2019

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

boxplot_data <- subset(new_data, timestamp %in% selected_timestamps)

new_data - это фрейм данных, содержащий столбец меток времени (тип PosixCT) иselected_timestamps - это вектор (я пробовал также список) того же типа, что и столбец timestamp.Фильтруя таким образом, у меня есть только пустой фрейм данных с тем же номером столбца.Любой совет?

Обновление Вот немного новых_данных:

 201021 2013-06-11 22:58:39                 19                    10      0.5263158
 201021 2013-06-11 23:03:40                 19                     9      0.4736842

тип отметки времени:

timestamp            : POSIXct, format: ....

И из выбранных отметок времени:

[1] "2013-06-11 09:03:39 CEST" "2013-06-11 10:03:39 CEST" "2013-06-11 11:03:44 CEST"
[4] "2013-06-11 12:03:39 CEST" "2013-06-11 13:03:39 CEST" "2013-06-11 14:03:39 CEST"
[7] "2013-06-11 15:03:39 CEST" "2013-06-11 16:03:40 CEST" "2013-06-11 17:03:39 CEST"

тип selected_timestamps:

POSIXct[1:24], format: ....

1 Ответ

0 голосов
/ 24 января 2019

Я ожидаю, что проблема связана с тем, что столбец метки времени в вашем data.frame имеет другой атрибут часового пояса. Поднабор работает нормально, когда часовой пояс идентичен, см. Код ниже:

x <- as.POSIXct(c("2013-06-11 22:58:39", "2013-06-11 22:58:40", "2013-06-11 22:58:41", "2013-06-11 22:58:42"))
y <- as.POSIXct(c("2013-06-11 22:58:40", "2013-06-11 22:58:41"))

df <- data.frame(timestamp = x)
print(df)
subset(df, timestamp %in% y)

df$timestamp[[2]]
y[1]

Выход:

> print(df)
            timestamp
1 2013-06-11 22:58:39
2 2013-06-11 22:58:40
3 2013-06-11 22:58:41
4 2013-06-11 22:58:42
> subset(df, timestamp %in% y)
            timestamp
2 2013-06-11 22:58:40
3 2013-06-11 22:58:41
> df$timestamp[[2]]
[1] "2013-06-11 22:58:40 CEST"
> y[1]
[1] "2013-06-11 22:58:40 CEST"

Я предлагаю вам проверить часовой пояс по print(new_data$timestamp[1]).

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