gpt4 book ai didi

R 按组将最后第 n 个值替换为 NA

转载 作者:行者123 更新时间:2023-12-02 01:35:00 25 4
gpt4 key购买 nike

我想按组将值替换为 NA。

have <- data.frame(id = c(1,1,1,1,2,2,2),
value = c(1,2,3,4,5,6,7))

want1 <- data.frame(id = c(1,1,1,1,2,2,2),
value = c(1,2,3,NA,5,6,NA))

want2 <- data.frame(id = c(1,1,1,1,2,2,2),
value = c(1,2,NA,NA,5,NA,NA))

want1 对应于将 value 的最后一个 obs 替换为 NA,want2 对应于将 value 的最后一个 obs 和最后第二个值替换为 NA。我目前正在尝试使用 dplyr 包,但似乎没有任何吸引力。任何帮助将非常感激。谢谢!

最佳答案

我们可以使用 row_number() 来根据组中的 n() 总行来测试当前行。

have |>
group_by(id) |>
mutate(
last1 = ifelse(row_number() == n(), NA, value),
last2 = ifelse(row_number() >= n() - 1, NA, value)
)
# # A tibble: 7 × 4
# # Groups: id [2]
# id value last1 last2
# <dbl> <dbl> <dbl> <dbl>
# 1 1 1 1 1
# 2 1 2 2 2
# 3 1 3 3 NA
# 4 1 4 NA NA
# 5 2 5 5 5
# 6 2 6 6 NA
# 7 2 7 NA NA

关于R 按组将最后第 n 个值替换为 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72562404/

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