Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从CSV文件的名称中提取日期_R_Date_Extract_Filenames - Fatal编程技术网

R 从CSV文件的名称中提取日期

R 从CSV文件的名称中提取日期,r,date,extract,filenames,R,Date,Extract,Filenames,如何将20151001提取为新向量中的日期(如2015-10-01),使新向量为: File Name Date Residential_20151001_0000_1.csv 2015-10-01 我们可以使用sub,匹配一个或多个非字符,后跟-,捕获数字部分((\\d+),后跟字符,直到字符串结束。在替换中,我们使用backreference(\\1)。提取字符串后,我们可以使用as.Date指定格式,将其转换为Date类 as.Date(sub('[^_]+_(\\d+).*',

如何将
20151001
提取为新向量中的日期(如
2015-10-01
),使新向量为:

  File Name Date
  Residential_20151001_0000_1.csv 2015-10-01

我们可以使用
sub
,匹配一个或多个非
字符,后跟
-
,捕获数字部分(
(\\d+
),后跟字符,直到字符串结束。在替换中,我们使用backreference(
\\1
)。提取字符串后,我们可以使用
as.Date
指定
格式,将其转换为
Date

as.Date(sub('[^_]+_(\\d+).*', '\\1', df1[,1]), "%Y%m%d")
#[1] "2015-10-01"

一个紧凑的选项是使用
stru extract
ymd

library(stringr)
library(lubridate)
ymd(str_extract(df1[,1], '\\d+'))
#[1] "2015-10-01 UTC"
更新 如果我们需要抽出时间

t1 <- sub('^[^_]+_[^_]+_(\\d{2})(\\d{2})_.*', '\\1:\\2', df1[,1])
t1
#[1] "00:00"
strptime(t1, format='%H:%M')

t1所有解决方案都将围绕提取日期,然后使用
as.date(,%Y%m%d”)
将其转换为格式

使用
sub
提取日期的第一个选项:

file_name <- "Residential_20151001_0000_1.csv"
file_date <- as.Date(sub( ".*?_(\\d{8})_.*", "\\1", file_name), "%Y%m%d" )

akrun在另一个答案中给出了其他选项。

您尝试了什么?为什么不起作用?所有文件名的格式是否完全相同?在
上拆分,取第二个值,格式。。。在提取日期时,lubridate的ymd函数给了我一个额外的“UTC”,我现在确实需要它。Tensibai使用的“sub”函数对我来说非常有效。多亏了这两个功能。@ManojKumar你可以用
as.Date(ymd(..
)来包装,它会很好的。我还展示了
sub
函数,你根本没有提到它。多亏了Tensibai…只是一个简单的问题,如果我只需要从“Residential__20151001_0000_1.csv”中提取日期,也就是0000 as 00:00(HH:MM),怎么做?我试过了:as.Date(sub(“*?”
file_date <- as.Date(strsplit(file_name,"_")[[1]][2], "%Y%m%d")