繁体   English   中英

对于R数据帧中的列,即使一个值不是NA,那么用该值替换所有NA吗?

[英]For a column in R dataframe, even if one value is not NA, then replace all NA's with that value?

我在R中有一个数据框,其中有20多个列和几百万行。 对于给定的ID,数据框可以包含约100个观察值。 我创建此数据框的方式是合并两个数据框。 因此,对于给定的ID,对于列日期,即使其中一个值不是NA,我也想用我找到的值替换该ID的date列中的所有NA值。 此列是由我用其他一些代码生成的,因此它可以具有单个唯一值或NA,而没有其他任何值。

我能找到的最接近的类似问题是这个

这是我能想到的最好的解决方案,但是我敢肯定有一种更优雅的方法可以做到这一点:

merged_df <- merged_df %>%
    filter(isAMI == 1) %>%
    group_by(accountnumber) %>% 
    mutate(amiStartDate = if_else(id == 1,
                                  amiStartDate[!is.na(amiStartDate)][1],
                                  amiStartDate))

基本的想法是,我要找到要进行更改的正确位置,并更改与NA值相对应的所有条目。

这样的事情对您有用吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM