R从日期时间中提取日期

Posted

技术标签:

【中文标题】R从日期时间中提取日期【英文标题】:R Extract day from datetime 【发布时间】:2014-11-20 12:35:06 【问题描述】:

您好,我只需要保留每个日期的日期:

df<-data.frame(x=c("2014-07-24 00:00:00", 
"2014-07-24 00:00:00", "2014-07-11", "2014-07-11" ,"2014-07-16" ,"2014-07-14"))
as.Date(df$x,format="%Y-%m-%d" )

我试过这个:

df$dia<-as.Date(df$x, format="%d")

但我得到了一个完整的日期,与原来的不同。

我不想安装另一个软件包来执行此操作。 我该如何解决? 谢谢

【问题讨论】:

df$x &lt;- as.Date(df$x) ?你想要今天的名字吗? weekdays(df$x) 你想要一个数字结果吗?你的问题不清楚。 根据定义,日期是年、月和日。您需要为人们提供更多信息以最好地帮助您。 df$x 的一些值有时间。他们在哪个时区?时间总是"00:00:00"?如果您只想将日期作为字符串,则可以使用format(as.Date(df$x,format="%Y-%m-%d"), "%d") 【参考方案1】:

你在找format吗?

format(as.Date(df$x,format="%Y-%m-%d"), format = "%d")
# [1] "24" "24" "11" "11" "16" "14"

【讨论】:

【参考方案2】:

如果您的日期始终处于相同的位置和格式,您可以选择substr()。下面的调用从第 9 个位置(一天的开始)开始,到第 10 个位置(当天的第二个数字)结束。

substr(x = df$x, start = 9, stop = 10)
[1] "24" "24" "11" "11" "16" "14"

【讨论】:

如果有人正在寻找具有相同功能的数字或因子格式,那么只需使用类型转换器:as.numeric 或 as.factor。【参考方案3】:

由于您的结果将不再是日期,您可以使用gsub

gsub("(.*)[-]", "", df$x)
# [1] "24" "24" "11" "11" "16" "14"

【讨论】:

【参考方案4】:

试试:

sapply(strsplit(as.character(df$x), '-'), function(x) x[3])
[1] "24" "24" "11" "11" "16" "14"

【讨论】:

【参考方案5】:

如果您已经将变量的类设置为日期类型,请尝试

df$dia <- format(df$x, "%d")

否则,将格式函数嵌套在 as.date 函数中

【讨论】:

【参考方案6】:

您可以简单地使用weekdays(df$date) 从日期中提取星期几。只需确保该列的类型为 Date 或使用 as.Date() 进行转换。

【讨论】:

以上是关于R从日期时间中提取日期的主要内容,如果未能解决你的问题,请参考以下文章

如何从R中具有月份名称的时间戳中提取日期

试图从时间戳 R 中提取日期

R从日期时间开始提取日期

从字符串中提取数字作为R中的数字或日期

从 r 中的日期中仅提取季度

从列中提取日期并在 R 中缺少年份时添加年份