我正在与纽约市开放数据工作,我想要合并两个基于社区委员会的数据框架。问题是,这两个数据帧的表示方式略有不同。我在下面提供了两种不同格式的示例。
CommunityBoards <- data.frame(FormatOne = c("01 BRONX", "05 QUEENS", "15 BROOKLYN", "03 STATEN ISLAND"),
FormatTwo = c("BRONX COMMUNITY BOARD #1", "QUEENS COMMUNITY BOARD #5",
"BROOKLYN COMMUNITY BOARD #15", "STATEN ISLAND COMMUNITY BD #3"))
除了数字和"#"的位置问题外,第二个数据框架缩短了"COMMUNITY BOARD"到"COMMUNITY BD"就在斯塔顿岛。我对字符串的样子没有强烈的偏好,只要我能分辨出行政区和社区委员会的号码就行。重新格式化一个或两个字符串以便合并这两个集合的最简单方法是什么?
谢谢你所有的帮助!
您可以使用regex仅获得地区编号。对于第一种格式,唯一重要的是空格之前的字符串开头,因此您可以执行
districtsNrs1 <- as.numeric(gsub("(\d+) .*","\1",CommunityBoards$FormatOne))
对于第二个,我假设格式看起来像" HASHTAG number",因此您可以执行
districtsNrs2 <- as.numeric(gsub(".* #(\d+)","\1",CommunityBoards$FormatTwo))
获取纯区号。
现在您知道如何提取地区编号了。有了这些信息,您可以按照自己的意愿命名/重新格式化地区名称。
要知道哪个地区编号是哪个地区,您可以在地区和数字之间创建一个转换data.frame
,如
districtNumberTranslations <- data.frame(
districtNumber = districtsNrs2,
districtName = sapply(strsplit(CommunityBoards$FormatTwo," COMMUNITY "),"[[",1)
)
为
# districtNumber districtName
#1 1 BRONX
#2 5 QUEENS
#3 15 BROOKLYN
#4 3 STATEN ISLAND