dput
моих данных таков:
structure(list(year = c(2009, 2009, 2009, 2009, 2009, 2009, 2009,
2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009), month = c(7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7), day = c(1, 1, 1, 1,
1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3), fivemin = c(1, 2, 3, 4, 5,
1, 2, 3, 4, 5, 1, 2, 3, 4, 5), rrp_nsw = c(16.9, 17.7, -17.7,
-16.7, -15.6, 13.7, 13.7, 13.9, 13.8, 13.7, -13.7, 13.8, 17.6,
17.7, 15.8), rrp_qld = c(17.6, 18.8, 18.6, 18.6, 17.6, -15.7,
15.8, 16.1, 16, -16.3, 15.8, 16, 17.6, -17.6, 16), rrp_sa = c(16.7,
17.8, 18.1, 17.6, 16.3, 12, 11.9, 12.1, 12.2, 11.6, 11.9, 12.1,
17.3, 17.3, 15.1), rrp_tas = c(15.7, 16.1, 15.9, -14.3, 13.2,
11.1, 11.1, -11.2, 11.2, 10.6, 11, 11.2, 16.5, 16.8, 15), rrp_vic = c(15.5,
15.5, -15.4, -12.8, 11.8, 12.9, 12.9, 12.9, 12.8, -12.6, 12.7,
12.9, 17.1, 17.4, 15.5)), row.names = c(NA, -15L), class = c("tbl_df",
"tbl", "data.frame"))
Мои данные содержат ежедневные наблюдения за ценами на электроэнергию. Моя цель состоит в том, чтобы заменить отрицательные цены rrp_nsw
, rrp_qld
, rrp_sa
, rrp_tas
и rrp_vic
их среднесуточными, однако для некоторых групп среднее значение остается отрицательным или нулевым, поэтому я хочу исключить вся группа, это означает, что я хочу удалить все наблюдения дня (1, 2 или 3). Например, среднесуточное значение (день 1) для rrp_nsw´ составляет -3,08, затем я хочу исключить эти 5 строк.
Я пытался использовать пакет dplyr
, но потерпел неудачу с моим кодом, который является следующим:
Data_modified<-Data%>%
group_by(year, month, day)%>%
mutate_at(vars(starts_with("rrp")),
funs(replace(., .<=0,
(mean(., na.rm=TRUE)))
))%>%
filter(
any(mean(., na.rm=TRUE)<=0)
)