У меня есть блок данных с тремя столбцами, состоящими из идентификатора сайта, даты выборки и измеренного значения. Вот теоретический набор данных.Фильтрация строк на основе разных заданий даты
Dates <- data.frame(c(as.Date("2008-7-1"),
rep(as.Date("2008-3-1"), times = 4) ,
rep(as.Date("2008-9-1"), times = 4),
as.Date("2008-9-8")))
Sites <- as.data.frame(as.factor(c("Site1",rep(c("Site1","Site2","Site3","Site4"), 2),
"Site1")))
Values <- data.frame(matrix(sample(0:50, 5*2, replace=TRUE), ncol=1))
Dataframe <- cbind(Dates,Sites,Values)
colnames(Dataframe) <- c("date","site","value")
Я отбираю конкретные образцы, которые не соответствуют определенным критериям.
Во-первых, я хотел бы выбрать только весенние и осенние образцы. Поэтому я хотел бы выбрать сайты в период с марта по май и сентябрь-ноябрь, что означает, что первая строка в фреймворке будет удалена. Есть ли лучший способ, чем следующее:
library(dplyr)
Season_sequence <- c(seq(as.Date("2008-3-1"),
as.Date("2008-5-31"), by="days"),
seq(as.Date("2008-9-1"),
as.Date("2008-11-30"), by="days"))
`%datein%` <- function(x,y) (x %in% y)
Season_removed <- Dataframe %>%
filter(date %datein% Season_sequence)
Это работает, но если у меня есть образцы в течение нескольких лет, я не знаю, как быстро создать последовательность, чтобы соответствовать этому.
Во-второй, я не хочу два образца с определенным сайта в течение определенного сезона (то есть я не хочу повторить любую пробу), а это означает, что последняя строка в dataframe будет удалена. Я не уверен, как начать с этого.
Спасибо. Это великолепно и очень близко! Но вместо того, чтобы каждый сайт отличался, существует ли способ создания идентификатора комбинации сайтов/сезонов и использования для этого конкретного? То есть Я хотел бы сохранить образец весны и осени для всех сайтов. –
Просто поправил это ;-) Лучше? – ztl
Прекрасное спасибо! –