r - 用R从字符中提取行、文本和数字
问题描述
需要从文本中提取数据(这只是一个示例)
text <- c(" 9 A 1427107 -",
" 99 (B) 3997915 -",
" 999 (SOCIO) 7161315 -",
" 9999 @M 4035115 -",
" 99999 01 Z 2136481035115 8,621"
)
到目前为止,我尝试了但无法为所有列创建模式
as.numeric(gsub("([0-9]+).*$", "\\1",text))
我希望我的数据框看起来像
row_names Text ID Amount
9 A 1427107 -
99 (B) 3997915 -
999 (SOCIO) 7161315 -
9999 @M 4035115 -
99999 01 Z 2136481035115 8,621
Row_names 是所有数字,“文本”包含数字,文本 ID 列包含 7 到 13 位数字,金额是“-”或带有千位 (,) 的数字
解决方案
我们可以使用read.table
将数据读入一个data.frame
df1 <- read.table(text = text, header = FALSE, fill = TRUE)
或使用extract
library(tibble)
library(tidyr)
tibble(col1 = trimws(text)) %>%
extract(col1, into = c('rn', 'Text', 'ID', 'Amount'),
'^(\\d+)\\s+(.*)\\s+(\\d+)\\s+([-0-9,]+)', convert = TRUE)
推荐阅读
- java - Android 10.0 将我的 android 应用程序签名为 WINDOWS 10 上的系统应用程序
- vhdl - VHDL RGB 到 YUV444 实现不匹配
- php - Magento2 REST API - POST 可配置产品选项:value_index 字段是什么?
- python - Python中多个数组的while循环导致真值错误
- angular - 如何使用 NgZone 修复 chrome 存储检索的延迟?
- soap - 从 XSD 检索有效的 SOAP 请求
- java - 用户点击后停止展示广告 15 秒 Facebook Audience Network
- javascript - 将外部数据传递给组件
- woocommerce - 如何为具有自定义订单状态的 WooCommerce 订单设置付款日期?
- javascript - 使用“sanitize-html”npm 包清理 HTML 的问题