R:获取一行中包含四个数字的单元格,然后获取这些数字

R:获取一行中包含四个数字的单元格,然后获取这些数字,r,split,R,Split,我在R中编程,我有一个这样的数据集: Date "mrt 2015" "2012-06-22" "2012 in Munchen" "1998?" "02-2012" "02-01-1990" .. 如何检索一行中的四个数值(2015、2012、2012、1998……)如果数字出现在字符串开头,我们可以使用str\u extract获取数字,否则返回NA library(stringr) as.integer(str_extract(df1$Date, "^\\d{4}")) #[1] 20

我在R中编程,我有一个这样的数据集:

Date 
"mrt 2015"
"2012-06-22"
"2012 in Munchen"
"1998?"
"02-2012"
"02-01-1990"
..

如何检索一行中的四个数值(2015、2012、2012、1998……)

如果数字出现在字符串开头,我们可以使用
str\u extract
获取数字,否则返回NA

library(stringr)
as.integer(str_extract(df1$Date, "^\\d{4}"))
#[1] 2015 2012 2012 1998
更新 根据OP编辑的数据集,如果4位数字出现在字符串中的任何位置,我们将删除表示字符串开头的
^
,并仅使用模式
\\d{4}
,即4位数字

as.integer(str_extract(df1$Date, "\\d{4}"))
#[1] 2015 2012 2012 1998 2012 1990
请注意,这是非常具体的,即如果有一个元素没有该模式,它将返回
NA

as.integer(str_extract(c('mrt 2015', 'mr5', '201-01', '02-01-1990', '2012'), '\\d{4}'))
#[1] 2015   NA   NA 1990 2012

或者
base R
选项是
regmatches/regexpr

as.integer(regmatches(df1$Date, regexpr("\\d{4}", df1$Date)))
#[1] 2015 2012 2012 1998 2012 1990

如果数字出现在字符串开头,我们可以使用
str\u extract
获取数字,否则返回NA

library(stringr)
as.integer(str_extract(df1$Date, "^\\d{4}"))
#[1] 2015 2012 2012 1998
更新 根据OP编辑的数据集,如果4位数字出现在字符串中的任何位置,我们将删除表示字符串开头的
^
,并仅使用模式
\\d{4}
,即4位数字

as.integer(str_extract(df1$Date, "\\d{4}"))
#[1] 2015 2012 2012 1998 2012 1990
请注意,这是非常具体的,即如果有一个元素没有该模式,它将返回
NA

as.integer(str_extract(c('mrt 2015', 'mr5', '201-01', '02-01-1990', '2012'), '\\d{4}'))
#[1] 2015   NA   NA 1990 2012

或者
base R
选项是
regmatches/regexpr

as.integer(regmatches(df1$Date, regexpr("\\d{4}", df1$Date)))
#[1] 2015 2012 2012 1998 2012 1990

您只需捕获字符串中任意位置的4个数字:

sub(".*(\\d{4}).*", "\\1", your_strings)
#[1] "2015" "2012" "2012" "1998" "2012" "1990"

说明:
*
表示任何0次或更多次的内容,然后将要捕获的内容放在括号中(因此,4位数字:
\\d{4}
),然后再次表示任何0次或更多次的内容(
*
)。

您只需要捕获字符串中任意位置的4个数字组:

sub(".*(\\d{4}).*", "\\1", your_strings)
#[1] "2015" "2012" "2012" "1998" "2012" "1990"

解释:
*
表示任何0次或更多次的内容,然后将要捕获的内容放在括号中(因此,4位数字:
\\d{4}
),然后再次表示任何0次或更多次的内容(
*
)。

可能重复的内容我没有看到我发布了具有结构的示例数据集。。真实的数据集没有任何结构,我将立即编辑我的帖子可能与我没有看到的重复我发布了具有结构的示例数据集。。真正的数据集没有任何结构,我现在就编辑我的帖子哦,我没有看到我发布了带有结构的示例数据集。。真正的数据集没有任何结构,我将编辑我的帖子now@Ziezo如果是这种情况,请删除
^
我更新了帖子哦,我没有看到我发布了具有结构的示例数据集。。真正的数据集没有任何结构,我将编辑我的帖子now@Ziezo如果是这种情况,请删除
^
我更新了帖子