我有一个包含两列,城镇和邮政编码的数据集。我希望如果每个邮政编码都有一个城镇,而不是分散几个不同的城镇。也就是说,我在想像:
每个唯一的邮政编码 将所有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]])))
}
答案 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