我有一个包含机构名称和地址的 CSV。如果我想要一串具有相同地址(特别是相同的邮政编码)的机构名称,我该如何在 R 或 Python 中做到这一点?无论哪种方式最有效都是可取的,但我仍在学习这两种方式。Google Refine 已经给了我每个邮政编码集群的数量,但我只需要知道哪些机构对应于这些邮政编码。
PS。是的,我知道邮政编码不好依赖;这样做的目的是为了说明这一点。
示例输入数据:
最终输出(稍后与 shapefile 合并):
您应该能够构建一个字典:
import csv
from collections import defaultdict
agencies = defaultdict(list)
with open('file.csv', 'r') as handle:
reader = csv.reader(handle)
for row in reader:
agencies[row[2]].append(row[0])
现在,agencies
包含邮政编码到机构的映射。
这是使用模拟数据的 R 解决方案的粗略草图:
set.seed(123)
dat <- data.frame(agency = sample(letters[1:15],100,replace = TRUE),
zipcode = sample(15,100,replace = TRUE))
head(dat)
#A base R solution
aggregate(dat$agency,
by = list(dat$zipcode),
FUN = function(x){paste(x,collapse = ",")})
#Or using the populat plyr package
library(plyr)
ddply(dat,
.(zipcode),
summarise,
agencies = paste(agency,collapse = ","))
数据的屏幕截图通常不是最有用的展示方式。一个完整的、最小的可重复示例将允许更完整的答案,这些答案更直接有用。(并减少您提出的后续问题。)