我在R中有一个数据框,其中有20多个列和几百万行。对于给定的ID,数据框可以包含约100个观察值。我创建此数据框的方式是合并两个数据框。因此,对于给定的ID,对于列日期,即使其中一个值不是NA,我也想用我找到的值替换该ID的date列中的所有NA值。此列是由我用其他一些代码生成的,因此它可以具有单个唯一值或NA,而没有其他任何内容。
我能找到的最接近的类似问题是this。
这是我能想到的最好的解决方案,但是我敢肯定有一种更优雅的方法可以做到这一点:
merged_df <- merged_df %>%
filter(isAMI == 1) %>%
group_by(accountnumber) %>%
mutate(amiStartDate = if_else(id == 1,
amiStartDate[!is.na(amiStartDate)][1],
amiStartDate))
最基本的想法是,我将找到要进行更改的正确位置,并更改与NA值相对应的所有条目。
答案 0 :(得分:1)
这样对您有用吗?
library(magrittr)
dta = data.frame(
id = c(1,1,1,1,2,2,2,2),
value = c(rep(NA, 3), 2, 1, NA, NA, NA)
)
dta %>%
dplyr::group_by(id) %>%
dplyr::mutate(
value = max(value, na.rm = TRUE)
)
#> # A tibble: 8 x 2
#> # Groups: id [2]
#> id value
#> <dbl> <dbl>
#> 1 1 2
#> 2 1 2
#> 3 1 2
#> 4 1 2
#> 5 2 1
#> 6 2 1
#> 7 2 1
#> 8 2 1