r - Stata - 在字符之前提取数字,创建列表

标签 r list extract stata

早上好,

我有一个数据框,其中一列的观察结果如下:

行1: 28316496(15)|28943784(8)|28579919(7)

第2行:29343898(1)

我想创建一个新列,提取不在括号中的数字,创建一个列表,然后附加所有这些数字以创建一个包含所有这些数字的列表。

p>

最后换句话说,我想最终得到以下列表:

28316496;28943784;28579919;29343898

它也可以是任何其他类似的对象,我只是对获取所有这些数字并将它们与另一个数据集进行匹配感兴趣。

我尝试使用str_extract_all来提取数字,但我无法理解模式参数。例如我尝试过:

str_extract_all("28316496(15)|28943784(8)", "\\d+(\\d)")

gsub("\\s*\\(.*", "", "28316496(15)|28943784(8)")

但它没有返回我想要的。

有什么想法可以提取括号外的数字并从中创建一个巨大的列表吗?

最佳答案

base R中,我们可以使用gsub删除(,后面跟着数字和) ,并使用 read.table 在 data.frame 中读取它

read.table(text = gsub("\\(\\d+\\)", "", df1$col1), 
    header = FALSE, sep = "|", fill = TRUE)
        V1       V2       V3
1 28316496 28943784 28579919
2 29343898       NA       NA

或者使用str_extract,使用正则表达式查找

library(stringr)
str_extract_all(df1$col1, "\\d+(?=\\()")
[[1]]
[1] "28316496" "28943784" "28579919"

[[2]]
[1] "29343898"

数据

df1 <- structure(list(col1 = c("28316496(15)|28943784(8)|28579919(7)", 
"29343898(1)")), class = "data.frame", row.names = c(NA, -2L))

关于r - Stata - 在字符之前提取数字,创建列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73837687/

相关文章:

r - data.table 聚合到列表列

r - 如何在每一行应用库命令并创建新变量

java - 使用java提取tar.gz错误

r - 特定文件夹中的文件运行出错,而同一文件在其他文件夹中运行顺利

R Shiny 数据表scrollX影响表宽度

r - 将嵌套列表折叠到方括号中

Python 列表按日期分组

javascript - 如何按数据属性对列表进行排序而忽略某个类?

java - 从封闭字符串中提取 IP 地址和端口的简单 Java 正则表达式

python - 使用 np.where() 将 Pandas 数据框中的 True/False 值更改为离散值