如何使用 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 这也可以在没有任何这样的包的情况下完成(pat
和 cn
来自上面):
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")
我从互联网上下载了一些 属性 销售数据。它是一个 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 这也可以在没有任何这样的包的情况下完成(pat
和 cn
来自上面):
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")