我有一个很大的数据集,其中每个邮政编码都有其对应的纬度和经度。在数据集中,缺少一些邮政编码。我需要根据缺少数据的相应纬度填写丢失的邮政编码。 在此示例中,我希望第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
除非确实需要,否则我不想安装其他软件包。
谢谢
答案 0 :(得分:1)
使用na_if
中的dplyr
用zipcode
列中的NA替换空白值,然后使用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