gpt4 book ai didi

r - na.locf 使用 dplyr 中的 group_by

转载 作者:行者123 更新时间:2023-12-02 01:31:44 26 4
gpt4 key购买 nike

我正在尝试将 zoo 包中的 na.locf 与使用 dplyr 的分组数据结合使用。我在这个问题上使用第一个解决方案:Using dplyr window-functions to make trailing values (fill in NA values)

library(dplyr);library(zoo)
df1 <- data.frame(id=rep(c("A","B"),each=3),problem=c(1,NA,2,NA,NA,NA),ok=c(NA,3,4,5,6,NA))
df1
id problem ok
1 A 1 NA
2 A NA 3
3 A 2 4
4 B NA 5
5 B NA 6
6 B NA NA

当组内所有数据均为 NA 时,就会出现问题。正如您在问题列中看到的,id=B 的 na.locf 数据来自另一组:id=A 的最后一个数据。

df1 %>% group_by(id) %>% na.locf()

Source: local data frame [6 x 3]
Groups: id [2]

id problem ok
<chr> <chr> <chr>
1 A 1 <NA>
2 A 1 3
3 A 2 4
4 B 2 5 #problem col is wrong
5 B 2 6 #problem col is wrong
6 B 2 6 #problem col is wrong

这是我预期的结果。 id=B 的数据与 id=A 中的数据无关

     id problem    ok
<chr> <chr> <chr>
1 A 1 <NA>
2 A 1 3
3 A 2 4
4 B NA 5
5 B NA 6
6 B NA 6

最佳答案

我们需要在 mutate_all 中使用 na.locf,因为 na.locf 可以直接应用于数据集。尽管它是按“id”分组的,但通过应用于完整数据集来应用 na.locf 并不遵循任何分组行为

df1 %>%
group_by(id) %>%
mutate_all(funs(na.locf(., na.rm = FALSE)))
# id problem ok
# <fctr> <dbl> <dbl>
#1 A 1 NA
#2 A 1 3
#3 A 2 4
#4 B NA 5
#5 B NA 6
#6 B NA 6

关于r - na.locf 使用 dplyr 中的 group_by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43212308/

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