r - 如何使用条件(如果或同时)替换 R 中的值?
问题描述
我正在尝试使用包含有关电价信息的数据。价格每 5 分钟登记一次。我的目标是用当天的平均值替换负值。
year month day fivemin rrp_nsw rrp_qld rrp_sa rrp_tas rrp_vic
2009 7 1 1 16.9 17.6 16.7 15.7 15.5
2009 7 1 2 17.7 18.8 17.8 -16.1 15.5
2009 7 1 3 -17.7 18.6 18.1 15.9 15.4
2009 7 1 4 16.7 18.6 -17.6 14.3 12.8
2009 7 2 1 -15.6 17.6 16.3 13.2 11.8
2009 7 2 2 13.7 15.7 12.0 -11.1 -12.9
2009 7 2 3 13.7 15.8 11.9 11.1 12.9
2009 7 2 4 -13.9 16.1 -12.1 11.2 12.9
2009 8 1 1 13.8 16.0 12.2 11.2 12.8
2009 8 1 2 -13.7 16.3 11.6 10.6 12.6
2009 8 1 3 13.7 -15.8 11.9 11.0 12.7
2009 8 1 4 13.8 16.0 12.1 11.2 12.9
2009 8 2 1 17.6 -17.6 17.3 16.5 17.1
2009 8 2 2 17.7 17.6 17.3 16.8 17.4
2009 8 2 3 15.8 16.0 15.1 15.0 15.5
2009 8 2 4 -15.4 15.6 14.5 14.6 15.1
2009 9 1 1 14.7 15.0 13.8 14.0 14.5
2009 9 1 2 15.3 15.4 14.3 14.6 15.0
2009 9 1 3 15.3 15.6 14.4 14.5 15.0
2009 9 1 4 14.9 15.7 13.7 13.8 14.5
为了获得每天的平均值,我使用以下代码
Daily_mean<-Base %>%
arrange(year, month, day, fivemin) %>% #we are ordering the data
group_by(year, month, day)%>%
summarise_at(
vars(c(rrp_nsw, rrp_qld, rrp_sa, rrp_tas, rrp_vic)),
.funs = funs(mean(.)))
当我得到每日平均值时,我想用当天的平均值替换每个负值。例如使用第 16 个观察值
2009 8 2 4 "8.925" 15.6 14.5 14.6 15.1
如果有人可以帮助我,我将不胜感激
解决方案
在按相关列分组后,我们可以使用replace
in将该列mutate_at
的负值更改为mean
library(dplyr)
Base %>%
arrange(year, month, day, fivemin) %>%
group_by(year, month, day) %>%
mutate_at(vars(rrp_nsw, rrp_qld, rrp_sa, rrp_tas, rrp_vic),
~ replace(., . < 0, mean(.)))
推荐阅读
- javascript - 它不会让我更改昵称 discord.js
- json - Unity3D - 我如何解析嵌套的重复 Json
- linux - 如何在 EC2 实例中为节点应用程序设置环境变量
- coq - 三个列表之间关系的归纳顺序
- python-3.x - Selenium Java 脚本 Webelement
- python - Python密码生成
- javascript - HTTP API 在 AWS Lambda 测试环境之外返回未定义的值
- flutter - 带有新文件飞镖的页面路由
- android - 由于没有显着披露,Android 应用从 Google Play 商店下架
- html - 如何更改边框宽度和高度,使其环绕文本?