我有一个数据框df,看起来像这样:

    date      sample
1 29-Apr 1,000 (1/4)
2 29-Apr 1,000 (1/4)
3 28-Apr 1,970
4 27-Apr 1,000 (1/4)
5 25-Apr 1,000 (1/4)
...

如何提取括号中的值并从中创建一个新列?

我可以在括号中extract the values:
matches <- regexpr("\\(.*?\\)", df$Sample_Size)
fractions_with_parens <- regmatches(df$Sample_Size, matches)
fractions <- gsub("[\\(\\)]", "", more)

但这将消除不匹配项,因此 vector 的确与数据帧的行的长度匹配。因此,在此示例中,第3行将丢失。

最佳答案

您可以尝试stringr:

library(stringr)
df$extract <- str_extract(df$sample, "\\(.*?\\)")

df
#    date      sample extract
#1 29-Apr 1,000 (1/4)   (1/4)
#2 29-Apr 1,000 (1/4)   (1/4)
#3 28-Apr       1,970    <NA>
#4 27-Apr 1,000 (1/4)   (1/4)
#5 25-Apr 1,000 (1/4)   (1/4)

要提取括号内的值,您可以执行以下操作:
df$extract <- str_extract(df$sample, "(?<=\\().*(?=\\))")

感谢epi99的建议。

关于r - 提取具有regmatch的数据并移至R中的新数据框行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43701056/

10-11 10:28