使用dplyr将值替换为来自同一data.frame的另一个字段的值

时间:2018-04-16 11:30:14

标签: r dplyr

我有data.frame包含从几个城市到某些目的地的旅行持续时间。结构(简化)如下表所示:

city  | dest1 | dest2 | closest
------+-------+-------+--------
cityA | NA    | NA    | cityC
cityB | NA    | NA    | cityD
cityC | 100   | 200   | cityA
cityD | 300   | 400   | cityB

现在,我要估算从cityAdest1的旅行时间cityCdest1的旅行时间(因为cityC最接近cityA {1}},最后一栏),即我想用NA替换左上角的100值。

是否有可能使用dplyr函数顺利完成此操作?

1 个答案:

答案 0 :(得分:4)

您可以使用left_join进行选择/重命名,使用mutate coalesce合并列,使用select删除您要删除的内容&#39 ; t想要输出。

library(dplyr)

df <- tibble(city = c("CityA","CityB","CityC","CityD"),
              dest1 = c(NA, NA, 100, 300),
              dest2 = c(NA, NA, 200, 400),
              closest = c("CityC","CityD","CityA","CityB"))


df %>% 
  left_join(select(., city = closest, dist = dest1), by = "city") %>% 
  mutate(dest1 = coalesce(dist, dest1)) %>% 
  select(-dist)