gpt4 book ai didi

r - 根据特定行 ID 计算缺失值,仅在具有 NA 的列上

转载 作者:行者123 更新时间:2023-12-05 03:16:42 24 4
gpt4 key购买 nike

我想通过对特定行的超前行和滞后行取平均值来计算缺失值。在这个例子中,2001 年。

df = data.frame(year = c(2000, 2001, 2002),
A = c(2, NA, 3),
B = c(2, 2, 3),
C = c(3, NA, 2))

已经尝试过 case_when(year == 2001, is.na(.) ~ (lead(.) + lag(.) )/2) 但不知道如何改变或改变所有NA 的所有实例的 2001 行。想象一下有很多列,有些已填满,有些未填满!

想法?谢谢!

最佳答案

您的方向是正确的。问题是您不想更改年份列,而是要更改 A、B 和 C 值。在这种情况下,您想更改 A 和 C。请参阅下面对您发布的解决方案的修复。

解决方案

library(dplyr)

df %>%
mutate(across(A:C, ~case_when( is.na(.x) ~ (lead(.x) + lag(.x) )/ 2,
TRUE ~ .x)))

输出

  year   A B   C
1 2000 2.0 2 3.0
2 2001 2.5 2 2.5
3 2002 3.0 3 2.0

PS:@akrun 也提供了一个优雅的解决方案。在下面查看他们对此解决方案的评论。

关于r - 根据特定行 ID 计算缺失值,仅在具有 NA 的列上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74552553/

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