我有一個看起來如下的df:
GROUP DATE VALUE TIMEFRAME
A 1/1/20 1 0
A 1/2/20 0 0
A 1/3/20 .5 1
A 1/4/20 .3 1
A 1/5/20 1 0
B 1/3/20 .1 1
B 1/4/20 .2 1
B 1/5/20 1 0
我想要做的是計算每組的最小值,但僅當 TIMEFRAME == 1 時,輸出將如下所示:
GROUP DATE VALUE TIMEFRAME MIN
A 1/1/20 1 0 .3
A 1/2/20 0 0 .3
A 1/3/20 .5 1 .3
A 1/4/20 .3 1 .3
A 1/5/20 1 0 .3
B 1/3/20 .1 1 .1
B 1/4/20 .2 1 .1
B 1/5/20 1 0 .1
我在這里嘗試使用 filter() 但我需要保留所有行
uj5u.com熱心網友回復:
在 中mutate,根據使用創建的邏輯運算式對 'VALUE' 進行子集化,在按 'GROUP' 分組后TIMEFRAME獲取這些值的子集min
library(dplyr)
df1 %>%
group_by(GROUP) %>%
mutate(MIN = min(VALUE[TIMEFRAME == 1])) %>%
ungroup
-輸出
# A tibble: 8 × 5
GROUP DATE VALUE TIMEFRAME MIN
<chr> <chr> <dbl> <int> <dbl>
1 A 1/1/20 1 0 0.3
2 A 1/2/20 0 0 0.3
3 A 1/3/20 0.5 1 0.3
4 A 1/4/20 0.3 1 0.3
5 A 1/5/20 1 0 0.3
6 B 1/3/20 0.1 1 0.1
7 B 1/4/20 0.2 1 0.1
8 B 1/5/20 1 0 0.1
資料
df1 <- structure(list(GROUP = c("A", "A", "A", "A", "A", "B", "B", "B"
), DATE = c("1/1/20", "1/2/20", "1/3/20", "1/4/20", "1/5/20",
"1/3/20", "1/4/20", "1/5/20"), VALUE = c(1, 0, 0.5, 0.3, 1, 0.1,
0.2, 1), TIMEFRAME = c(0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L)),
class = "data.frame", row.names = c(NA,
-8L))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/426671.html
