【发布时间】:2021-09-14 17:08:40
【问题描述】:
我正在尝试将多个列从“字符”转换为日期,但还要重新格式化日期。我可以逐列进行,但我希望编写某种循环来迭代所有变量。
例如,我可以做
dates_test$date.d.m.y <- format(as.Date(dates_test$date.d.m.y, "%d/%m/%Y), "%m/%d/%Y")
我将如何编写代码,以便将 date.d.m.y 和 d.m.y.test 的格式同时更改为 %m/%d/%Y 格式?
这里的数据集:
dput(head(dates_test,20)
structure(list(date.m.d.y = c("5/13/2013", "5/14/2013", "5/15/2013",
"5/16/2013", "5/17/2013", "5/18/2013", "5/19/2013", "5/20/2013",
"5/21/2013", "5/22/2013", "5/23/2013", "5/24/2013", "5/25/2013",
"5/26/2013", "5/27/2013", "5/28/2013", "5/29/2013", "5/30/2013",
"5/31/2013", "6/1/2013"), date.d.m.y = c("2/2/2012", "2/2/2012",
"2/2/2012", "2/2/2012", "2/2/2012", "9/2/2012", "9/2/2012", "9/2/2012",
"9/2/2012", "9/2/2012", "16/2/2012", "16/2/2012", "16/2/2012",
"16/2/2012", "16/2/2012", "23/2/2012", "23/2/2012", "23/2/2012",
"23/2/2012", "23/2/2012"), date.y.m.d = c("2010-12-11", "2010-12-12",
"2010-12-13", "2010-12-14", "2010-12-15", "2010-12-16", "2010-12-17",
"2010-12-18", "2010-12-19", "2010-12-20", "2010-12-21", "2010-12-22",
"2010-12-23", "2010-12-24", "2010-12-25", "2010-12-26", "2010-12-27",
"2010-12-28", "2010-12-29", "2010-12-30"), date.d.m.y.2 = c("13.5.2013",
"14.5.2013", "15.5.2013", "16.5.2013", "17.5.2013", "18.5.2013",
"19.5.2013", "20.5.2013", "21.5.2013", "22.5.2013", "23.5.2013",
"24.5.2013", "25.5.2013", "26.5.2013", "27.5.2013", "28.5.2013",
"29.5.2013", "30.5.2013", "31.5.2013", "1.6.2013"), date.m.d.y.2 = c("13-May-2013",
"14-May-2013", "15-May-2013", "16-May-2013", "17-May-2013", "18-May-2013",
"19-May-2013", "20-May-2013", "21-May-2013", "22-May-2013", "23-May-2013",
"24-May-2013", "25-May-2013", "26-May-2013", "27-May-2013", "28-May-2013",
"29-May-2013", "30-May-2013", "31-May-2013", "1-Jun-2013"), d.m.y.test = c("2/2/2012",
"2/2/2012", "2/2/2012", "2/2/2012", "2/2/2012", "9/2/2012", "9/2/2012",
"9/2/2012", "9/2/2012", "9/2/2012", "16/2/2012", "16/2/2012",
"16/2/2012", "16/2/2012", "16/2/2012", "23/2/2012", "23/2/2012",
"23/2/2012", "23/2/2012", "23/2/2012"), new = c("13/05/2013",
"14/05/2013", "15/05/2013", "16/05/2013", "17/05/2013", "18/05/2013",
"19/05/2013", "20/05/2013", "21/05/2013", "22/05/2013", "23/05/2013",
"24/05/2013", "25/05/2013", "26/05/2013", "27/05/2013", "28/05/2013",
"29/05/2013", "30/05/2013", "31/05/2013", "01/06/2013")), row.names = c(NA,
20L), class = "data.frame")
【问题讨论】:
-
图片不是发布数据(或代码)的好方法。请参阅 this Meta 和 relevant xkcd。您可以以
dput格式发布示例数据吗?请使用您尝试过的代码和dput(dates_test)的输出来编辑问题。或者,如果dput(head(dates_test, 20))的输出太大。 -
请注意,当您 format() 时,您会将日期转换回字符串。这是你想要的吗?
-
@RuiBarradas - 刚刚添加了 dput 输出。感谢您的专业提示和您对我的耐心!
-
@MrFlick - 不,所以我想这是第 2 个问题。本质上,我正在尝试将所有变量转换为 %m/%d/%Y 日期格式。
-
到目前为止,第一列和最后一列似乎完全相同。这是否意味着最后一列已被编辑?
标签: r date format as.date reformatting