如何根据R中的唯一邮政编码设置城镇名称

时间:2017-01-17 10:57:56

标签: r grouping

我有一个包含两列,城镇和邮政编码的数据集。我希望如果每个邮政编码都有一个城镇,而不是分散几个不同的城镇。也就是说,我在想像:

每个唯一的邮政编码    将所有town.names设置为该邮政编码最常用的城镇名称

到目前为止,我尝试过类似的事情:

unique.zipcode <- mydata$zipcode[!duplicated(mydata$zipcode)

for(i in 1:length(unique.zipcode){
    mydata$town <- names(which.max(table(mydata$town[mydata$zipcode==unique.zipcode[i]])))
}

1 个答案:

答案 0 :(得分:1)

模拟一些数据,因为你没有提供任何数据:

library(dplyr)

set.seed(1492)

data_frame(
  town=sample(LETTERS[1:6], 100, replace=TRUE),
  zip=sample(c("10010", "21000", "30100", "40001"), 100, replace=TRUE)
) -> df

看看:

glimpse(df)
## Observations: 100
## Variables: 2
## $ town <chr> "B", "B", "B", "A", "A", "A", "F", "D", "C", "E", "D", "D...
## $ zip  <chr> "21000", "30100", "21000", "21000", "10010", "21000", "40...

证明我们有重复:

count(df, zip)
## # A tibble: 4 × 2
##     zip     n
##   <chr> <int>
## 1 10010    27
## 2 21000    24
## 3 30100    19
## 4 40001    30

通过频率和频率消除它们处理关系。

count(df, zip, town) %>%
  top_n(1) %>%
  slice(1)
## Source: local data frame [4 x 3]
## Groups: zip [4]
## 
##     zip  town     n
##   <chr> <chr> <int>
## 1 10010     C     7
## 2 21000     D     6
## 3 30100     F     6
## 4 40001     D     8