r - 如何将带有新行的文本输出表格化到数据框中?
问题描述
这是我正在使用的文本块的结构:
reprEx <- "] WITHDRAWALS\nDATE DESCRIPTION AMOUNT\n04/01 Quickpay With Zelle Payment To Mike T 819018100 $1,450.00\n04/01 Quickpay With Zelle Payment To Mandy Doid 809012906 2,665.00"
我希望能够在每个新行上获取文本并将行中的每个元素分隔到相应的数据框列。例如,我需要将每行的日期放在 DATE 列中,将交易描述放在 DESCRIPTION 列中,并将行尾之前的数字放入 AMOUNT 列中。这是我在数据框中所需输出的示例。
desiredResult <- data.frame(DATE = c("04/01", "04/01"),
DESCRIPTION = c("Quickpay With Zelle Payment To Mike T 819018100", "Quickpay With Zelle Payment To Mandy Doid 819012906"),
AMOUNT = c("$1,450.00", "2,665.00"))
解决方案
这个开头怎么样?此解决方案str_extract_all
从stringr
包中使用:
desiredResult <- data.frame(
DATE = unlist(str_extract_all(reprEx, "\\d{2}/\\d{2}")),
DESCRIPTION = unlist(str_extract_all(reprEx, "(?<=[0-9]{2}/[0-9]{2}\\s)[\\s\\w$]+(?=\\d{1,3},\\d{3}\\.\\d{2})")),
AMOUNT = unlist(str_extract_all(reprEx, "\\d{1,3},\\d{3}\\.\\d{2}"))
)
输出:
desiredResult
DATE DESCRIPTION AMOUNT
1 04/01 Quickpay With Zelle Payment To Mike T 8090128100 $ 1,450.00
2 04/01 Quickpay With Zelle Payment To Mandy Dold 8090129906 2,665.00
如果你想去掉 column 中的美元符号DESCRIPTION
,你可以这样做:
desiredResult <- data.frame(
DATE = unlist(str_extract_all(reprEx, "[0-9]{2}/[0-9]{2}")),
DESCRIPTION = unlist(str_extract_all(reprEx, "(?<=[0-9]{2}/[0-9]{2}\\s)[\\s\\w]+(?=\\d{1,3},\\d{3}\\.\\d{2})|(?<=[0-9]{2}/[0-9]{2}\\s)[\\s\\w]+(?=\\$\\d{1,3},\\d{3}\\.\\d{2})")),
AMOUNT = unlist(str_extract_all(reprEx, "\\d{1,3},\\d{3}\\.\\d{2}"))
)
输出:
desiredResult
DATE DESCRIPTION AMOUNT
1 04/01 Quickpay With Zelle Payment To Mike T 8090128100 1,450.00
2 04/01 Quickpay With Zelle Payment To Mandy Dold 8090129906 2,665.00
推荐阅读
- javascript - axios.post 在搜索栏中显示用户输入
- python-3.x - 使用加入与否?XML Python API
- python - 定位一个只有 'd' 属性和 selenium 的路径元素
- r - 如何将股票代码读入函数?
- c++ - C++ - 将二维数组传递给函数
- python - 使用json标签水平翻转数据集中图像的简单方法?
- php - 使用数据表时,具有一列复选框的表格显示被隐藏
- amazon-ecs - 如何从 Docker 实例内部将多个日志流式传输到 AWS CloudWatch?
- python - 根据 'key=value' 项将 pandas 列拆分为多个列
- jetbrains-ide - 如何在 JetBrains Marketplace 准入期间配置插件验证程序?