我有data.frame
包含从几个城市到某些目的地的旅行持续时间。结构(简化)如下表所示:
city | dest1 | dest2 | closest
------+-------+-------+--------
cityA | NA | NA | cityC
cityB | NA | NA | cityD
cityC | 100 | 200 | cityA
cityD | 300 | 400 | cityB
现在,我要估算从cityA
到dest1
的旅行时间cityC
到dest1
的旅行时间(因为cityC
最接近cityA
{1}},最后一栏),即我想用NA
替换左上角的100
值。
是否有可能使用dplyr
函数顺利完成此操作?
答案 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)