gpt4 book ai didi

R cummax函数与NA

转载 作者:行者123 更新时间:2023-12-03 02:05:51 26 4
gpt4 key购买 nike

数据

data=data.frame("person"=c(1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2),
"score"=c(1,2,1,2,3,1,3,NA,4,2,1,NA,2,NA,3,1,2,4),
"want"=c(1,2,1,2,3,3,3,3,4,2,1,1,2,2,3,3,3,4))

尝试

library(dplyr)

data = data %>%
group_by(person) %>%
mutate(wantTEST = ifelse(score >= 3 | (row_number() >= which.max(score == 3)),
cummax(score), score),
wantTEST = replace(wantTEST, duplicated(wantTEST == 4) & wantTEST == 4, NA))

我基本上正在努力使用 cummax 函数,但仅在特定情况下使用。我想保留任何值 (1-2-1-1) 除非有 3 或 4 (1-2-1-3-2-1-4) 应该是 (1-2-1-3-3 -4)。如果有 NA 值,我想结转以前的值。谢谢。

最佳答案

这是使用 tidyverse 的一种方法。您可能想在 group_by() 之后使用 fill(),但这有点不清楚。

data %>% 
fill(score) %>%
group_by(person) %>%
mutate(
w = ifelse(cummax(score) > 2, cummax(score), score)
) %>%
ungroup()

# A tibble: 18 x 4
person score want w
<dbl> <dbl> <dbl> <dbl>
1 1 1 1 1
2 1 2 2 2
3 1 1 1 1
4 1 2 2 2
5 1 3 3 3
6 1 1 3 3
7 1 3 3 3
8 1 3 3 3
9 1 4 4 4
10 2 2 2 2
11 2 1 1 1
12 2 1 1 1
13 2 2 2 2
14 2 2 2 2
15 2 3 3 3
16 2 1 3 3
17 2 2 3 3
18 2 4 4 4

关于R cummax函数与NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56590590/

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