R: Заполнение пропущенных значений в столбце на основе других столбцов - PullRequest
0 голосов
/ 27 января 2020

У меня есть большой набор данных, где каждый почтовый индекс имеет свою широту и долготу. В наборе данных отсутствуют некоторые почтовые индексы. Мне нужно заполнить недостающие почтовые индексы на основе их соответствующего широты, где эти данные не пропущены. В этом примере я хотел бы, чтобы в строках 4 и 5 были вставлены a и b для почтового индекса, поскольку они имеют одинаковые значения lat и long:

zipcode <- c("a","b","c","","")
lat <- c("1","2","3","1","2")
lon <- c("6","7","8","6","7")
data.frame(zipcode,lat,lon)
  zipcode lat lon
1       a   1   6
2       b   2   7
3       c   3   8
4           1   6
5           2   7

Я бы предпочел не устанавливать другой пакет, если это действительно не нужно.

Спасибо

1 Ответ

0 голосов
/ 27 января 2020

Использование na_if из dplyr для замены пустых значений на NA в столбце zipcode, а затем использование fill из tidyr:

library(dplyr)
library(tidyr)
df %>%
    group_by(lat, lon) %>% 
    mutate(zipcode = na_if(zipcode, "")) %>% 
    fill(zipcode)

#   zipcode lat   lon  
   #<fct>   <fct> <fct>
   #1 a       1     6    
   #2 b       2     7    
   #3 c       3     8    
   #4 a       1     6    
   #5 b       2     7 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...