【问题标题】:Overwriting only NAs in column A with values from column B [duplicate]仅用 B 列中的值覆盖 A 列中的 NA [重复]
【发布时间】:2020-04-14 22:45:34
【问题描述】:

我在数据框中有 A 列和 B 列:

A = structure(c(NA, NA, NA, 1559401558, 1559413729, 1559417798), class = c("POSIXct", 
"POSIXt"), tzone = "")

B = structure(c(1559379600, 1559388600, 1559397600, 1559406600, 1559415600, 
1559424600), class = c("POSIXct", "POSIXt"), tzone = "UTC")
> 

如您所见,只有 A 列缺少日期。我现在想要,只有A 中缺失的日期被B 中的相关值(相同的索引)替换。我知道这应该与索引一起使用,但我找不到解决方案。感谢您的帮助!

【问题讨论】:

标签: r


【解决方案1】:

使用基础 R:

A[is.na(A)] <- B[is.na(A)]

【讨论】:

    【解决方案2】:

    我们可以使用coalesce

    library(dplyr) 
    coalesce(A, B)
    

    正如 @RuiBarradas 在 cmets 中提到的,我们可以在执行 coalesce 之前将 tz 设置为 NULL

    library(lubridate)
    coalesce(A, `tz<-`(B, ""))
    

    【讨论】:

    • 请注意,A 没有分配时区,因此结果可能会令人意外。
    【解决方案3】:

    与tidyverse:

    library(tidyverse)
    
    tibble(A = A, B = B) %>%
     mutate(A = ifelse(is.na(A), B, A))
    

    【讨论】:

      猜你喜欢
      • 2021-06-10
      • 1970-01-01
      • 2016-10-25
      • 1970-01-01
      • 2022-11-29
      • 2017-04-20
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      相关资源
      最近更新 更多