r - 使用 R 从列中的字符串中提取数值

标签 r string split

我有一个具有以下列结构的表格:

Name                                                Type
Urgent Care (Revenue Code: 0456)                    Per Case
IV Therapy (Revenue Codes 0260, 0269)               Per Visit
Oncology Treatment (Revenue Codes: 0280, 0289)      Per Visit

我想从名称列中提取数字收入代码,因此表格如下所示:

Name                     Rev Code      Type
Urgent Care              0456          Per Case
IV Therapy               0260, 0269    Per Visit
Oncology Treatment       0280, 0289    Per Visit

名称列中的原始数据不一致,因为单词“Code”后面跟着一个“;” 、空格、“-”等。所以我尝试使用正则表达式来搜索第一个数字,然后拆分那里的列。

我尝试使用正则表达式从tidyr包中搜索第一个数字和separate():

library(tidyr)
separate(mydata, Name, into = c("Name", "Rev Code"), sep = "[[:digit:]]")

这会在正确的位置拆分列,但“修订版代码”列最终会变成空白? 我对 R 比较陌生,非常感谢任何帮助!

数据:

structure(list(
Name = c("Urgent Care (Revenue Code: 0456)", "IV Therapy (Revenue Codes 0260, 0269)", 
"Oncology Treatment (Revenue Codes: 0280, 0289)"), 
Type = c("Per Case", "Per Visit", "Per Visit")), 
.Names = c("Name", "Type"), row.names = 1:3, class = "data.frame")

最佳答案

read.table(header=TRUE, stringsAsFactors=FALSE, sep=",", text='Name,Type
"Urgent Care (Revenue Code: 0456)", "Per Case"
"IV Therapy (Revenue Codes 0260, 0269)","Per Visit"
"Oncology Treatment (Revenue Codes: 0280, 0289)", "Per Visit"') -> df

library(stringi)
library(dplyr)
library(purrr)

extract_codes <- function(x) {
  stri_match_all_regex(x, "[[:digit:]]+") %>% # extract the numbers
    map(~paste0(as.vector(.), collapse=", ")) # paste them back together
}

mutate(df, `Rev Code`=extract_codes(Name))

关于r - 使用 R 从列中的字符串中提取数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40046678/

相关文章:

r - 将 Boot 调用包装在函数中会产生错误

r - 当所有列都大于一个值时过滤行

r - 如何在 R 中转置时间序列数据,以便日期变量最终成为新变量名称

c++ - 如何获取 std::string 中的字符数?

powershell - Powershell,在解析和切换目录名称字符串后重命名目录

Java 相当于 python 的 String 分区

r - 将列表列转换为字符串

ruby - 如何打印两个零的 00 作为整数?

java - BigDecimal 到字符串

java - 如何从 url 的最后一个路径中分割剩余路径