gpt4 book ai didi

r - 如何用前一列中的最后一个非缺失值填充 NA?

转载 作者:行者123 更新时间:2023-12-05 01:04:34 29 4
gpt4 key购买 nike

我的 df 包含一个包含所有缺失值的列 (V5):

> df
# A tibble: 7 × 5
V1 V2 V3 V4 V5
<dbl> <dbl> <dbl> <dbl> <lgl>
1 1.19 2.45 0.83 0.87 NA
2 1.13 0.79 0.68 5.43 NA
3 1.18 1.09 1.04 NA NA
4 1.11 1.1 4.24 NA NA
5 1.16 1.13 NA NA NA
6 1.18 NA NA NA NA
7 1.44 NA 9.17 NA NA

我想用前列中最接近的非缺失值填充 V5 列:

> df1
# A tibble: 7 × 5
V1 V2 V3 V4 V5
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1.19 2.45 0.83 0.87 0.87
2 1.13 0.79 0.68 5.43 5.43
3 1.18 1.09 1.04 NA 1.04
4 1.11 1.1 4.24 NA 4.24
5 1.16 1.13 NA NA 1.13
6 1.18 NA NA NA 1.18
7 1.44 NA 9.17 NA 9.17

similar帖子,但没有人帮助解决这个问题。因此,任何线索将不胜感激。

这是输出:

structure(list(V1 = c(1.19, 1.13, 1.18, 1.11, 1.16, 1.18, 1.44
), V2 = c(2.45, 0.79, 1.09, 1.1, 1.13, NA, NA), V3 = c(0.83,
0.68, 1.04, 4.24, NA, NA, 9.17), V4 = c(0.87, 5.43, NA, NA, NA,
NA, NA), V5 = c(NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_, NA_character_)), row.names = c(NA,
-7L), class = c("tbl_df", "tbl", "data.frame"))

最佳答案

你可以使用

library(dplyr)
df %>%
mutate(V5 = coalesce(V4, V3, V2, V1))

返回

# A tibble: 7 x 5
V1 V2 V3 V4 V5
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1.19 2.45 0.83 0.87 0.87
2 1.13 0.79 0.68 5.43 5.43
3 1.18 1.09 1.04 NA 1.04
4 1.11 1.1 4.24 NA 4.24
5 1.16 1.13 NA NA 1.13
6 1.18 NA NA NA 1.18
7 1.44 NA 9.17 NA 9.17

或更一般的来自 https://github.com/tidyverse/funs/issues/54#issuecomment-892377998

df %>% 
mutate(V5 = do.call(coalesce, rev(across(-V5))))

https://github.com/tidyverse/funs/issues/54#issuecomment-1096449488

df %>% 
mutate(V5 = coalesce(!!!rev(select(., -V5))))

关于r - 如何用前一列中的最后一个非缺失值填充 NA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71984320/

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