我想在 ~
后面放一个条件项在 case_when
功能。
我的例子:
df:
df <- structure(list(x = c("a", "a", "a", "b", "b", "b", "c", "c",
"c", "a", "a", "a"), y = 1:12), class = "data.frame", row.names = c(NA,
-12L))
不工作的代码:library(dplyr)
df %>%
group_by(x) %>%
mutate(y = case_when(x=="b" ~ cumsum(y),
TRUE ~ y)) %>%
mutate(y = case_when(x=="a" ~ "what I want: last value of group "b" in column y",
TRUE ~ y))
用一句话来说:group_by
x
cumsum
组b
在栏目y
y
组在哪里a
所需的输出:
x y
<chr> <dbl>
1 a 15
2 a 15
3 a 15
4 b 4
5 b 9
6 b 15
7 c 7
8 c 8
9 c 9
10 a 15
11 a 15
12 a 15
非常感谢!!!
最佳答案
在这种情况下,group_by()
不是必需的(尽管它有助于提高可读性等):
df %>%
mutate(y = case_when(x == "b" ~ cumsum(y * (x == "b")),
x == "a" ~ max(cumsum(y[x == "b"])),
TRUE ~ y))
x y
1 a 15
2 a 15
3 a 15
4 b 4
5 b 9
6 b 15
7 c 7
8 c 8
9 c 9
10 a 15
11 a 15
12 a 15
关于r - `~` 函数中 `case_when` 之后的条件项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67208649/