Давайте создадим некоторые воспроизводимые данные, так как ваш вопрос их пропускает:
as1 <- read.csv(header = T, text = "
da, cat
2016-06-04 04:05:45,A
2016-06-04 04:05:46,B
2016-06-04 04:05:45,C
2016-06-04 04:05:46,D", stringsAsFactors = FALSE)
Теперь первое, что вы хотите проверить, это то, является ли столбец "da" на самом деле POSIXct
.
class(as1$da)
#> [1] "character"
В моем примере это не так, поэтому я добавляю дополнительную строку к трубе dplyr
.
library(dplyr)
as2 <- as1 %>%
mutate(da = as.POSIXct(da)) %>% # add only if column isn't POSIXct
filter(da == as.POSIXct("2016-06-04 04:05:45") & cat == "A")
В основном то, что вы сделали неправильно, оставило as.POSIXct("2016-06-04 04:05:45")
в качестве выражения. filter
оценивает условие, то есть оно сохраняет только те строки, где что-то равно TRUE
. Следовательно, для «2016-06-04 04:05:45» вам нужен тест --- da == as.POSIXct("2016-06-04 04:05:45")
.
Почему вам нужно &
здесь, а не &&
, см. thisответ .