首页 > 解决方案 > 存在 NA 时将数据从一列移动到另一列

问题描述

我有以下数据:

library(dplyr)

d <- data_frame(
     unique = c(1,2,3,4),
     lat = c(NA, 87.6, 78.6, 67.7),
     latitude= c(34.5, NA, 45.6, 34.8))

我想做的是,当纬度中有一个“NA”时(例如,在第 1 列中,“纬度”有一个 NA),则取纬度的值。所以我最终会得到一个名为 'latitude_new' 的新列,看起来像(34.5, 87.6, 45.6, 34.8).

我确信这可以使用 dplyr 中的 'mutate 来完成,我只是不太确定如何?

标签: rdplyr

解决方案


使用dplyr::coalesce第一个非缺失值替换所有 NA

library(dplyr)
d %>% mutate(latitude_new = coalesce(lat,latitude))

    # A tibble: 4 x 4
    unique   lat latitude latitude_new
    <dbl> <dbl>    <dbl>        <dbl>
    1      1  NA       34.5         34.5
    2      2  87.6     NA           87.6
    3      3  78.6     45.6         78.6
    4      4  67.7     34.8         67.7

推荐阅读