【发布时间】:2019-09-10 00:52:25
【问题描述】:
我正在处理人口普查 (CTPP) 数据,GEOID 字段是一个包含大量地理信息的长字符串。此字符串的格式因各种人口普查表而异,但它们提供代码查找。这是一个示例 GEOID 和格式“代码”。 (我已经可以解析的部分已被删除。这是我无法解析的GEOID部分。)
geoid <- "0202000000126"
format <- "ssccczzzzzzzz"
这意味着前两个字符 ("02") 表示州(阿拉斯加),接下来的三个 ("020") 是县,其余字符是地区。
我有一张包含这些大地水准面/格式对的表格,每一行的格式可以不同。
- s: 状态
- c: 县
- p:地点
- z:区域
- (本简单示例中未使用的其他)
df <- data.frame(
geoid = c(
"0224230",
"0202000000126"
),
format = c(
"ssppppp",
"ssccczzzzzzzz"
)
)
# A tibble: 2 x 2
geoid format
<chr> <chr>
1 0224230 ssppppp
2 0202000000126 ssccczzzzzzzz
我想做的是将geoid 列分解为每个地理区域的列,如下所示:
# A tibble: 2 x 6
geoid format s p c z
<chr> <chr> <chr> <chr> <chr> <chr>
1 0224230 ssppppp 02 24230 NA NA
2 0202000000126 ssccczzzzzzzz 02 NA 020 00000126
我研究了几种方法。来自stringr 的extract() 看起来很有希望。我也很确定我需要一个自定义函数来映射(?)/映射到我的数据框。
【问题讨论】:
-
您好,您可以将数据框声明从
data_frame修改为data.frame。
标签: r string dplyr tidyr stringr