如何从R中的数据列中提取月份,日期和年份

时间:2017-02-06 04:36:23

标签: r database

我有一个日期数据类型的列。在我的专栏中,日期是4/1/2007格式。现在我想从R中不同列中该列和日期值中提取月份值。我的日期是从2012年1月1日到2015年1月1日PLZ帮助我。

2 个答案:

答案 0 :(得分:1)

如果您的变量是日期类型(正如您在帖子中所说),只需使用以下内容来提取月份:

month_var = format(df$datecolumn, "%m") # this will give output like "09"
month_var = format(df$datecolumn, "%b") # this will give output like "Sep"
month_var = format(df$datecolumn, "%B") # this will give output like "September"

如果您的日期变量不是日期格式,那么您必须将它们转换为日期格式。

df$datecolumn<- as.Date(x, format = "%m/%d/%Y")

答案 1 :(得分:0)

假设您的初始数据为character而非POSIX

df <- data.frame(d = c("4/1/2007", "01/01/2012", "02/01/2015"),
                 stringsAsFactors = FALSE)
df
#            d
# 1   4/1/2007
# 2 01/01/2012
# 3 02/01/2015

这些还没有&#34;日期&#34;,只是字符串。

df$d2 = as.POSIXct(df$d, format = "%m/%d/%Y")
df
#            d         d2
# 1   4/1/2007 2007-04-01
# 2 01/01/2012 2012-01-01
# 3 02/01/2015 2015-02-01

现在他们正确的约会(以R方式)。这两行只从每个&#34; date&#34;中提取一个组件。有关所有可用格式的详细信息,请参阅?strptime

df$dY = format(df$d2, "%Y")
df$dm = format(df$d2, "%m")
df
#            d         d2   dY dm
# 1   4/1/2007 2007-04-01 2007 04
# 2 01/01/2012 2012-01-01 2012 01
# 3 02/01/2015 2015-02-01 2015 02

另一种方法是从每个字符串中提取子字符串,但现在你正在进入正则表达式的痛苦;为此,我建议坚持使用别人的正则表达式经验教训,并翻译POSIXct(如果你愿意,甚至POSIXlt)。