如何使用 r 和 stringr 从 "Airport West 1/26 Cameron St 3 br t 0000 S Nelson Alexander" 之类的字符串中提取子字符串

how to extract sub strings from a string like "Airport West 1/26 Cameron St 3 br t $830000 S Nelson Alexander" using r and stringr

我从互联网上下载了一些 属性 销售数据。它是一个 PDF 文件。当我将数据复制并粘贴到文本文件中时,它看起来像这样:

> a
[1] "Airport West 1/26 Cameron St 3 br t 0000 S Nelson Alexander" "Albert Park 106 Graham St 2 br h [=11=] SP RT Edgar"  

我们以第一行为例。每一行都是一个属性的记录,包括郊区(Airport West)、地址(1/26 Cameron St)、卧室数(3)、属性类型(t)、价格($830000) ), 销售类型 (S)。最后一个(Nelson)是关于代理的,我这里不需要。

我想分析这个数据。我需要先提取信息。我希望我能得到这样的数据:(b是一个数据框)

> b
        Suburb         Address Bedroom PropertyType  Price SoldType
1 Airport West 1/26 Cameron St       3            t 830000        S
2  Albert Park   106 Graham St       2            h      0       SP

谁能告诉我如何使用 stringr 包或其他方法将长字符串拆分为我需要的子字符串?

1) gsubfn包中的gsubfn::read.pattern read.pattern取一个正则表达式,其捕获组(括号内的部分)取为输入字段和数据框被创建为 assemble 它们。

library(gsubfn)

pat <- "^(.*?) (\d.*?) (\d) br (.) [$](\d+) (\w+) .*"
cn <- c("Suburb", "Address", "Bedroom", "PropertyType", "Price", "SoldType")
read.pattern(text = a, pattern = pat, col.names = cn, as.is = TRUE)

给这个 data.frame:

        Suburb         Address Bedroom PropertyType  Price SoldType
1 Airport West 1/26 Cameron St       3            t 830000        S
2  Albert Park   106 Graham St       2            h      0       SP

2) no packages 这也可以在没有任何这样的包的情况下完成(patcn 来自上面):

replacement <- "\1,\2,\3,\4,\5,\6"
read.table(text = sub(pat, replacement, a), col.names = cn, as.is = TRUE, sep = ",")

注意:可重现形式的输入a是:

a <- c("Airport West 1/26 Cameron St 3 br t 0000 S Nelson Alexander", 
"Albert Park 106 Graham St 2 br h [=13=] SP RT Edgar")