r - 从文本中提取房间测量值
问题描述
我正在尝试从文本数据中提取房间测量值,但无法找到一种可以满足所有可能性的方法。
样本数据:
room_info <- c(
"Lounge (3.66m x 3.66m (12'0\" x 12'0\"))",
"Dining Kitchen (4.39m x 3.66m (14'5 x 12'0\"))",
"Bedroom One (3.73m x 3.73m (12'3\" x 12'3\"))",
"Bedroom Two (3.53m x 1.98m (11'7\" x 6'6\"))",
"Shower Room (2.06m x 1.52m (6'9\" x 5'0\"))",
"Occasional Loft Room (4.04m x 3.78m (13'3\" x 12'5\"))",
"En-Suite Bathroom (3.18m x 1.98m (10'5\" x 6'6\"))"
)
###Desired Output:
room_measurements <- tibble(
meas_1 = c(3.66, 4.39, 3.73, 3.53, 2.06, 4.04, 3.18),
meas_2 = c(3.66, 3.66, 3.73, 1.98, 1.52, 3.78, 1.98)
)
我将以下内容放在一起,这适用于某些但并非所有的最后一个值不正确。由于某种原因,a-
出现在数据抛出substr
.
我有理由相信测量值不会超过 9.99m,因此总长度不应超过 4 个字符。
room_info %>%
gsub("[^0-9.-]", "", .) %>%
as_tibble() %>% mutate(
meas_1 = as.numeric(substr(value, 1,4)),
meas_2 = as.numeric(substr(value, 5,8)),
) %>% select(-1)
# A tibble: 7 x 2
meas_1 meas_2
<dbl> <dbl>
1 3.66 3.66
2 4.39 3.66
3 3.73 3.73
4 3.53 1.98
5 2.06 1.52
6 4.04 3.78
7 -3.1 81.9
解决方案
我们可以使用str_extract
正则表达式环视来提取在(
`x 和空格之后或之后的数字子字符串
library(dplyr)
library(stringr)
tibble(text = room_info) %>%
transmute(meas_1 = str_extract(text, "(?<=\\()[0-9.]+"),
meas_2 = str_extract(text, "(?<=x )[0-9.]+")) %>%
type.convert(as.is = TRUE)
-输出
# A tibble: 7 x 2
# meas_1 meas_2
# <dbl> <dbl>
#1 3.66 3.66
#2 4.39 3.66
#3 3.73 3.73
#4 3.53 1.98
#5 2.06 1.52
#6 4.04 3.78
#7 3.18 1.98
或read.table
从base R
数据中提取子字符串后使用
read.table(text = gsub("[a-z]", "", sub(".*\\((.*)\\s*\\(.*",
"\\1", room_info)), header = FALSE, col.names = c('meas_1', 'meas_2'))
-输出
# meas_1 meas_2
#1 3.66 3.66
#2 4.39 3.66
#3 3.73 3.73
#4 3.53 1.98
#5 2.06 1.52
#6 4.04 3.78
#7 3.18 1.98
在 OP 的帖子中,显示的最后一个值-
是因为 in gsub
,它正在删除除数字(0-9
或.
或-
)之外的所有字符,并且-
来自En-Suite
推荐阅读
- javascript - 图表看起来只有灰色,不显示颜色 - Chartjs,discordjs
- reactjs - reactjs if jsx里面的条件
- flutter - 如何在 Flutter for-in 循环中解析未定义名称“货币”?
- shopify - 如给定图像所示,如何在 shopify 管理订单中显示其他详细信息?
- api - 文档中的 Airflow api 身份验证示例给了我一个 401
- javascript - 正确跟踪 vue-multiselect 中的选项
- python - 使用 matplotlib 增加 x 和 y 值
- python - bs4 从特定表和列中提取数据
- version-control - Perforce resolve 无法正确处理重命名
- php - 将类添加到按钮后功能不起作用