【发布时间】:2021-10-29 05:31:20
【问题描述】:
我的数据比下面显示的数据大得多(仅作为示例)。
Code <- c("A", "A", "A", "A", "A", "B", "B", "B", "B", "B")
Date <- as.Date(c("2018-01-01", "2018-01-02", "2018-01-03", "2018-01-04", "2018-01-05", "2018-01-01", "2018-01-02", "2018-01-03", "2018-01-04", "2018-01-05"))
Max <- c(2.4, 4.2, 3.7, 10.6, 5.2, 8.7, 3.9, 4.8, 14.5, 3.2)
Mean <- c(2.2, 3.9, 3.1, 5.3, 4.3, 4.8, 3.6, 4.2, 6.0, 2.8)
Limit <- c(6.5, 6.5, 6.5, 6.5, 6.5, 10.5, 10.5, 10.5, 10.5, 10.5)
df <- data.frame(Code, Date, Max, Mean, Limit)
我想做的是将大于Limit 的任何Max 值替换为Mean 值,但仅限于Code == "A"。
所以在本例中,第四个最大值 (10.6) 将替换为 5.3。
我一直在努力解决这个问题,但我相信这里的很多人可以提供帮助!
我尝试将代码 A 和 B 分离到它们自己的数据框中并替换它们,但我想不出办法来做到这一点。我还尝试使用 mutate 创建一个新列,其中包含 ifelse 语句,但无法解决。
我主要使用dplyr,所以如果你能用它来解释,那就太好了!非常感谢,如果您需要更多信息,请告诉我,我会添加它。
【问题讨论】: