gpt4 book ai didi

r - `~` 函数中 `case_when` 之后的条件项

转载 作者:行者123 更新时间:2023-12-03 15:41:07 24 4
gpt4 key购买 nike

我想在 ~ 后面放一个条件项在 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
  • 计算 cumsumb在栏目y
  • 取该组 (=b) 的最后一个值 (=15) 和
  • 将此值 (=15) 放入列 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/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com