我有一个数据框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/